> Can anyone explain the difference between my() and
> local() ?
Yes
> The manual says that I usually want to use my() but
> what exactly happens to a variable using local?
my() creates a brand new variable, which is undef unless
you specify otherwise. It is only visible within the
current lexical scope. E.g.
my $x = "World!";
foreach (1..1) {
my $x = "Hello";
print $x;
}
print " $x";
should print "Hello World!";
since my is lexically scoped, when you leave the foreach
you lose that variable.
local() is for creating a temporary copy of a built in
variable. This is useful for this kind of thing:
local @ARGV = ("filename");
print "$.: $_" while (<>);
which will make a temporary copy of @ARGV; assign
"filename" to it. And then the next line iterates over
that file, printing line numbers. When you leave the scope
the old value of @ARGV is restored.
Jonathan Paton
__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]