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