Thread Array - anonym oder benannt?
(14 answers)
Opened by hugenyn at 2011-02-26 00:20
Dubu hat alles ganz richtig gesagt, aber um die Verwirrung zu minimieren sollte man ein bisschen weiter ausholen.
Beim Aufruf einer Subroutine wird immer eine Liste übergeben. Bei Code: (dl
)
perl -w -MData::Dumper -e '@a=[1,2,{1=>{2=>"i"}}]; sub abc{print Dumper \@_ }; abc(@a)'; wird zum Beispiel eine Liste mit den Elementen von @a übergeben. @a enthält als einziges Element eine Referenz auf einen Array. Also wird im Endeffekt eine Referenz auf einen Array übergeben. Innerhalb der Subroutine sind die übergebenen Parameter über den Array @_ verfügbar. Die Elemente von @_ sind dabei Aliase auf die übergebenen Parameter. Ist ein Parameter modifizierbar, dann kann in der Sub etwas im Kontext das Aufrufers ändern. Wird versucht etwas konstantes zu ändern, so meckert perl das an. Das Modifizieren der Parameter ist meistens unerwünscht. Deshalb kopiert man in der Subroutine oft um. Wird eine Referenz übergeben so kann die referenzierte Datenstruktur geändert werden. Beispiele: Code: (dl
)
1 use strict; |