[Dresden-pm] Ein Hash von einer Liste von Hashs

Steffen Schwigon schwigon at webit.de
Fre Feb 3 02:45:33 PST 2006


"A. Pagaltzis" <pagaltzis at gmx.de> writes:
> Ich sehe nur eine Liste von Hashes. Wo ist der äussere Hash?

Ich glaube, es ging ihm genau darum, dass ihm die Struktur mit
verschachtelten Datenstrukturen, konkret Hashes, syntaktisch nicht
klar ist.

Das Grundproblem ist für Ungeübte eine Perl5-Inkonsistenz, dass
nämlich runde Klammern für beides, Arrays und Hashes, verwendet
werden, Verschachtelungen aber mit Referenzen gebaut werden müssen,
die dann plötzlich [] und {} verwenden. Damit nimmt man die äußere
runde Klammer plötzlich nicht mehr richtig wahr.

Ich erzähle daher oft Leuten, dass Sie am besten auch außen schon eine
Referenz verwenden sollen, z.B.:

my $status_hash = {                        ### man beachte '$' und '{'
                   1 => {
                          name => 'affe',
                        },
                   2 => {
                          name => 'loewe',
                        },
                   3 => {
                          name => 'giraffe',
                        },
                  };

Und Zugriff mit "->":

  my $status = do_something();
  print $status_hash->{$status};


Das hilft IMHO über die Verständnis-Totpunkt hinweg, den man beim
"Umstieg" auf Referenzen erstmal hat. Später nimmt man dann doch
wieder %status_hash, schon weil das Syntaxhighlighting damit geiler
ist.


GreetinX
Steffen 
-- 
Steffen Schwigon <schwigon at webit.de>
Dresden Perl Mongers <http://dresden-pm.org/>