Thread Übung für DBD::CSV
(19 answers)
Opened by Gast at 2009-12-15 12:32
Der Unterschied ist der, dass $_ im Gegensatz zu einer mit my deklarierten Variablen global gültig ist.
Zum Beispiel kann also der Körper der Subroutine, die durch $sth->execute(...) aufgerufen wird, den Inhalt von $_, der von der while-Schleife gesetzt wird, auslesen oder gar überschreiben, auf eine Variable, die im Schleifenkopf mit my deklariert wurde, kann er aber nicht zugreifen. Unter Umständen kann man sich durch die Verwendung globaler Variablen Probleme einhandeln, besonders dann, wenn verschiedene Subroutinenaufrufe verschachtelt werden und nicht darauf geachtet wurde, die Variablen korrekt zu lokalisieren. Im Interesse sauberer und übersichtlicher Programme sind lexikalische Variablen in der Regel vorzuziehen. Ab Perl 5.10 kann man auch mit der Deklaration my $_ die implizite Schleifenvariable zu einer lexikalischen Variablen machen und so die Vorteile von sauber getrennten Geltungsbereichen und verringerter Tipparbeit in den Schleifenköpfen kombinieren :-) When C++ is your hammer, every problem looks like your thumb.
|