Thread Übung für DBD::CSV (19 answers)
Opened by Gast at 2009-12-15 12:32

murphy
 2009-12-21 15:12
#129578 #129578
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
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.

View full thread Übung für DBD::CSV