Was hier gemacht wird, nennt sich dereferenzieren. Ein Wert in einem Hash kann nur ein Skalar sein. Nun möchte man aber häufiger auch mal mehrere Werte zu einem Schlüssel in einem Hash anleden. Dass der Schlüssel mehrfach im Hash auftritt geht nicht (ist ja das Prinzip eines Hashs, dass der Schlüssel nur einmal auftaucht).Also speichert man eine Arrayreferenz für den Schlüssel.
Um auf die Werte der Arrayreferenz zugreifen zu können, muss man dereferenzieren. Das funktioniert mit @{Referenz} , wobei Referenz in $DATA{$var[2]} steht...
Bildlich gesprochen:
Dein hash ist wie ein Aktenschrank. Zu jedem Aktenzeichen (Schlüssel) gibt es es einen Ordner (Wert). Wenn Du aber mehrere Ordner zu einem Aktenzeichen hast, musst Du die Ordner in einen kleinen Karton packen (Arrayreferenz), damit der Standort der Akten weiterhin eindeutig bestimmt werden kann.
Um auf die Ordner zugreifen zu können, musst Du den Karton aufgemacht werden.
Was in dem Code passiert, ist dass der Karton aufgemacht wird (@{$DATA{$var[2]}) und ein paar Ordner dort abgelegt werden ( = @var)...
Mehr zum Thema Referenzen findest Du unter perldoc perlreftut
(das gibt's im Wiki von Perl-Community.de auch auf deutsch)
Datum: 12.06.2006-11:10
