Thread Haltbarkeit von $_[0] (9 answers)
Opened by bianca at 2010-04-02 08:36

murphy
 2010-04-02 13:30
#135626 #135626
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Man muss auch noch aufpassen, was man genau mit den Elementen von @_ anstellt — sie enthalten nämlich Aliase auf die eigentlichen Parameter, nicht Kopien von ihnen. Wenn ich also zum Beispiel
Code (perl): (dl )
1
2
3
4
5
sub foo {
  $_[0] =~ y/x/y/;
}

foo("xyzzy");

ausführe, gibt das einen Fehler, weil die Transliterationsoperation in der Subroutine foo versucht, die übergebene Konstante zu verändern.

Kopiert man die Parameter einer Subroutine zunächst in lokale Variablen, so ist man vor diesem in der Regel unerwünschten Verhalten gefeit. Gelegentlich will man aber auch genau solch ein Verhalten erreichen und sollte dann nicht aus @_ herauskopieren, sondern erneut einen Alias anlegen oder das Arrayelement direkt modifizieren.
When C++ is your hammer, every problem looks like your thumb.

View full thread Haltbarkeit von $_[0]