Scope of variables in a function
Andrew Beverley
andy at andybev.com
Sat Jun 1 17:43:40 BST 2013
Could somebody explain why the following code prints "barbar" rather
than "bar" please? I am trying to understand why the $result variable in
the search function retains its value the second time the function is
called.
Up until now I had thought that variables in a function defined with
"my" would be empty each time the function was called, so this has
caught me out.
The code is just proof of concept: I realise that it could be written
more efficiently!
sub search($)
{
my $in = shift;
my $result = "FOO" if $in =~ /foo/;
$result = $1 if ($in =~ /^(bar)/);
return $result;
}
print search("bar");
print search("none");
Thanks,
Andy
More information about the london.pm
mailing list