Mehrdimensionale Arrays und Hashes kann man in Perl nur mit Referenzen erzeugen. Um einen Hash als zweite Dimension in ein Array einzuführen, erzeugst Du mit dem Backslash-Operator eine Referenz auf den Hash und legst diese Referenz im Array ab. Zu
Beispiel:
%artikel = (
farbe => 'gruen',
preis => '34.50',
groesse => 'M'
);
$arr[0] = \%artikel;
Test:
print $arr[0]->{farbe}, "\n";
print $arr[0]->{preis}, "\n";
print $arr[0]->{groesse}, "\n";
Der Pfeil kann auch weggelassen werden, so dass
print $arr[0]{farbe}, "\n";
print $arr[0]{preis}, "\n";
print $arr[0]{groesse}, "\n";
das gleiche Resultat ergibt.
Statt mit einer Referenz auf einen benannten Hash kann man auch eine Referenz auf einen anonymen Hash erzeugen, wodurch man sich die Backslash-Schreibweise erspart; zu beachten ist jedoch, dass man den anonymen Hash mit geschweiften Klammern einfasst:
$artikel = {
farbe => 'gruen',
preis => '34.50',
groesse => 'M'
};
$arr[0] = $artikel;