[Cologne-pm] Hash von Hash von Array???

A. Pagaltzis pagaltzis at gmx.de
Sun Feb 22 13:45:19 CST 2004


Hallo Melanie,

* Melanie <scholz.melanie at web.de> [2004-02-22 17:24]:
> Hallo Aristoteles,

antworte doch bitte auf die Liste. Wenn dein Mailer sowas nicht
von sich aus anbietet und du vergisst, den Addressaten zu ändern,
dann benutz die hoffentlich vorhandene "Antwort an
Alle"-Funktion, sodass die Liste gleich im Cc: steht.

> >Syntax ist richtig.
> >
> >Ob's genau das tut, was es tun lassen wolltest, weiss ich
> >nicht sicher -- aber zu deinem Subject passt es ganz genau.
> 
> Dann wird es wohl auch das tun, was es soll.
> >
> >Du könntest übrigens auch
> >
> >        Krankheiten => \@Krankheiten,
> >
> >schreiben -- deine Version legt ein neue Kopie des Inhaltes an
> >und liefert darauf eine Referenz.
> 
> Hm, die Referenzen hab'  ich noch nicht ganz durchschaut,
> klingt aber logisch.
> Würde das auch bei den oberen, also Name => $Name Sinn machen?

Kommt drauf an. Damit übergibst du eine Referenz auf die
Variable, statt einer Kopie ihres Wertes. Das ist normalerweise
nicht das gewünschte. Bei Arrays ist es deswegen üblich, weil der
Kopieraufwand uU erheblich sein kann; allerdings sollte man das
dann logischerweise nur dann tun, wenn man das gleiche Array
nicht später für andere Zwecke (bzw Datensätze) recyclet.

Du könntest ebensogut zB folgendes machen:

    chop(my $Krankheiten =<STDIN>);
    my $Krankheiten = [ split /,/,$Krankheiten ];

und dann demenstpr

        Krankheiten => $Krankheiten,

Übrigens sehe ich da was, das mir garnicht aufgefallen ist: du
willst nicht chop(), sondern chomp(). chop() schneidet das letzte
Zeichen ab, *egal*was*es*ist*. Auch wenn es kein Zeilenumbruch
war.. chomp() dagegen schneidet einen (auch mehrere Zeichen
langen) Zeilentrenner ab -- aber nur, wenn da auch wirklich einer
ist.

In deinem Fall ist das egal. Man sollte sich chop() aber
grundsätzlich abgewöhnen; man braucht es nur extrem selten.
(So selten, dass es in Perl6 abgeschafft wird -- man kann das
gewünschte auch mit substr() erreichen, und in den Fällen wo
chop() tatsächlich das Richtige ist geht es eh schon um
Stringmanipulation.)

-- 
Gruss,
Aristoteles
 
"Wer nicht über sich selbst lachen kann, nimmt das Leben nicht ernst genug."



More information about the Cologne-pm mailing list