Thread Array - anonym oder benannt? (14 answers)
Opened by hugenyn at 2011-02-26 00:20

Dubu
 2011-02-26 15:22
#146072 #146072
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
2011-02-26T08:05:55 leo11
Bei der Erstellung von @_ macht es einen Unterschied in Performance und Speicherverbrauch ob nur eine Referenz kopiert werden muss, oder die komletten Daten. Des Weiteren kommt hinzu, dass man in der sub die Originaldaten manipulieren kann, sofern man eine Referenz übergibt. Möchte man sichergehen, das das nicht passiert, sollte man lieber auf einer Kopie der Daten arbeiten.
Subs in Perl sind immer call-by-reference.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
sub bla {
   s/a/u/g for @_;
}

my @ar=qw/faa bar baz/;
bla(@ar);
print "@ar";
__END__
fuu bur buz

Deshalb kopiert man ja häufig am Anfang einer Sub mittels my @bla = @_. Und man sollte genau wissen, was man macht, wenn man @_ verändert.

Insofern bringt eine Arrayreferenz vom Speicherbedarf her nichts bei der Übergabe an Subroutinen. Aber zum Beispiel, wenn man mehr als ein Array übergeben will, oder noch weitere Parameter. Auch braucht man Arrayreferenzen natürlich in komplexeren Datenstrukturen.

View full thread Array - anonym oder benannt?