User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
Ich merke mir das so, dass my() räumlich wirkt ("vom Anfang bis zum Ende des Blocks"), während local() zeitlich wirkt ("so lange, bis der Block beendet wird"). Das ist wahrscheinlich auch nicht besser erklärt, aber mir hat's geholfen. ;)
User since
2003-08-21
2613
Artikel
ModeratorIn
Ich merke mir das eigentlich so, dass local() fast dasselbe ist, wie die Variable am Ende des Blockes wieder auf den alten Wert zurueckzusetzen...
User since
2003-08-04
12208
Artikel
Admin1
ja, finde ich auch ziemlich eine ziemlich einleuchtende erklärung,
die man auch prima neulingen vermitteln kann.
User since
2003-08-04
5246
Artikel
ModeratorIn
stimmt; damit bringt man auch das folgende hin (finster, ich weiss)
use vars qw(@Array);
@Array = 1..40;
print "Before: @Array\n";
{
local @Array[0..19];
$_++ for @Array;
print "Inside: @Array\n";
}
print "Outside: @Array\n";
\n\n
<!--EDIT|Strat|1149171354-->
User since
2003-08-04
12208
Artikel
Admin1
finster, aber manchmal notwendig. ich local()isiere des öfteren einzelne %ENV-variablen.
User since
2003-08-04
5246
Artikel
ModeratorIn
@pq: fuer sowas finde ich es ja (leider) noetig
Anmerkung zu meinem Code von oben:
local sollte man ausser bei "eingebauten" Perl-Variablen nicht mehr verwenden