Verschachtelte Arrays in Perl
Immer wieder suchen Leute mit Google nach “perl verschachtelte Arrays”, und landen auf meiner Perl 6-Seite, wo die Erklärung natürlich nur für Perl 6 gilt.
Hier also die Perl 5-Erklärung:
Listen werden üblicherweise “geflattet”, d.h. wenn man eine Liste in eine andere einfügt, ist das Ergebnis wieder nur eine einzige Liste:
my @a = (1, (2, 3), 4, 5); # Ist identisch mit (1, 2, 3, 4, 5)
Abhilfe schaffen Referenzen, die man durch Vorstellen eine Backslash \ erzeugt:
my @b = (2, 3); my @a = (1, \\@b, 4, 5); print $a[1][0], "\n"; # Ausgabe ist 2 print scalar @a, "\n"; # Länge von @a, also 4
Um aus Arrays Referenzen zu machen, kann man auch eckige Klammern nehmen:
my @a = (1, [2, 3], 4, 5);
Wenn man einer Referenz auf ein Array ein @ vorstellt, macht man daraus wieder ein “echtes” Array:
my $a = [1, 2, 3, 4]; print join ", ", @$a;
Wenn man nur auf ein Element einer Arrayreferenz zugreifen will, kann man den Pfeiloperator verwenden:
my $a = [1, 2, 3, 4]; print $a->[0], "\n"; # Ausgabe: 1
Eine Ausführliche Beschreibung gibt es in der deutschen Übersetzung von perllol (lol steht hier für “Lists of Lists”)

Renée Bäcker said,
July 20, 2007 @ 11:31 am
my @a = (1, @b, 4, 5);
Da fehlt der Backslash…
moritz said,
July 20, 2007 @ 12:23 pm
Danke fuer den Hinweis, den hatte Wordpress gefressen. Jetzt habe ich ihn verdoppelt, jetzt wird er einfach angezeigt :)