Problem mit Array

Peter Seitz jun. p.seitz at koehler-seitz.de
Wed Dec 29 05:28:02 CST 1999


* * * vienna-pm-list * * *


On Tue, 28 Dec 1999 11:56:43 +0100
   "Peter J. Holzer" <hjp at wsr.ac.at> wrote:

Hallo Peter,

[...]
> > Nachdem ich den code wie folgt abgeaendert habe hat es (endlich) 
> > funktioniert, doch ich verstehe nicht wiso mein obiger Ansatz nicht 
> > zum richtigen Ergebnis fuehrt.
> 
> Ich auch nicht. Der Code schaut richtig aus und bei mir funktioniert er
> auch. Wenn ich davor 
> 
> | %strings_db = ( a1 => A1, a2 => A2, a3 => A3 );
> | %strings_db_caption = ( b1 => B1, b2 => B2, b3 => B3 );
> | %strings_db_button = ( c1 => C1, c2 => C2, c3 => C3 );
> 
> und danach ein 
> 
> | print "@string1\n";
> 
> einfüge ist das Ergebnis 
> 
> | a1 a2 a3 b1 b2 b3 c1 c2 c3
> 
> und das sollte es ja sein.
> 
> Offenbar hast Du den Bug schon beseitigt. Ich nehme an, daß im
> Originalcode ein »my @string1« zuviel vorkommt oder %strings_db_caption
> nicht sichtbar ist. Verwendest Du »perl -w« und »use strict«?

Ich verwende perl -w, allerdings kein use strict. Ich hatte da mal 
meine Schwierigkeiten mit den Variablendefinitionen. Ich habs dann 
der Einfachheit halber wieder weggelassen.

Ich habe den Fehler leider nicht beseitigt. Ein my @string1 habe ich 
nicht verwendet (sollte ich wohl besser tun).

Wie stelle ich fest, dass %strings_db_caption sichtbar ist? Ich 
schreibe vorher die Werte aus diesem Hash in eine eigene Datei und da 
waren alle dabei.

> Anmerkung zum Stil: Statt

Danke dafuer. Das ist insbesondere fuer Anfaenger (und dazu zaehle 
ich mich immer noch) sehr wichtig.

> 
> > while (($text, $help) = each %strings_db) {
> >   @string1 = (@string1, $text);
> > }
> 
> kann man auch 
> 
> | for $text (keys %strings_db) {
> |   @string1 = (@string1, $text);
> | }
> 
> schreiben, was IMHO besser zum Ausdruck bringt, daß hier nur die Keys
> des Hashes verwendet werden. Außerdem fällt da sofort auf, daß wir die
> Elemente eines Arrays (keys %strings_db) einzeln an ein anderes Array
> anhängen, was nicht besonders effizient ist. Die ganze schleife läßt
> sich also zu
> 
> | @string1 = (@string1, (keys %strings_db));
> 
> bzw. 
> 
> | push (@string1, (keys %strings_db));
> 
> verkürzen.

welches von den beiden letzten Ausdruecken ist dann der effizientere?


Gruss
               Peter Seitz
    Projektleiter Projekt Woerterbuch
-- 
Interesse an einem freien deutschen Woerterbuch? Helfer gesucht!
Projekt Woerterbuch: <URL:http://Free-Dict.bzs.tu-graz.ac.at/>
###
You are subscribed to vienna-pm-list
http://www.fff.at/fff/vienna.pm/



More information about the Vienna-pm mailing list