perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 31
Click for quality!




11.02.2012 / 13:07

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


Beitrag@{$DATA{$var[2]}}=@var
Seitenanfang
Ich schraube schon recht lange an Perl-Code herum, jedoch nur an dem den Andere geschrieben haben und dann stolpere ich mal immer wieder über im Thema genannte Syntax und verstehe es zugegebenermaßen überhaupt nicht.

ich würde mich sehr freuen, wenn mir das hier einal jemand aufdröseln würde. Danke schonmal vorab.

@{$DATA{$var[2]}}=@var  

Verstanden habe ich bisher folgendes:

- Array @var wird zugewiesen
- Es gibt ein Hash %DATA mit dem Elementnamen $var[2]

Aber was ist das äußere @{ } ?

Gruß P.

Datum: 09.06.2006-06:37

Beitragre: @{$DATA{$var[2]}}=@var
Seitenanfang
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

Beitragre: @{$DATA{$var[2]}}=@var
Seitenanfang
Ich habe das Gefühl es verstanden zu haben, besonders wenn es bildlich gesprochen wird, habe ich hin und wieder die Chance, vielen Dank!

Ich tue mich mit den Referenzen und der Syntax dahinter zugegebenermaßen recht schwer.

Gruß

Datum: 12.06.2006-11:25

-






-
-