Thread "Always use my; never use local" ? (8 answers)
Opened by RalphFFM at 2008-02-01 11:30

murphy
 2008-02-01 11:57
#105443 #105443
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Man sollte sich einfach bewusst sein, dass local nicht für lokale Variablen gedacht ist – dafür gibt es eben my – sondern für das lokale und temporäre Verändern des Wertes einer globalen Variablen.

Neben dem Beispiel von Taulmarill ist meines Erachtens auch noch bei folgendem Konstrukt der Einsatz von local kritisch wichtig:
Code (perl): (dl )
1
2
3
4
5
6
{
  local $_;
  while (<FILE>) {
    # do something
  }
}

(Wenn man hier kein local verwendet und sich innerhalb einer Subroutine befindet zerschießt man dem aufrufenden Code den Inhalt von $_, was ungewünschte Konsequenzen haben kann.)

In Perl 5.10 sieht die Situation nochmal etwas anders aus, da hier im Spezialfall $_ nahezu identisches Verhalten aus den Deklarationen local $_ und my $_ resultiert.
When C++ is your hammer, every problem looks like your thumb.

View full thread "Always use my; never use local" ?