Scope of variables in a function

Andrew Beverley andy at andybev.com
Sat Jun 1 18:58:13 BST 2013


On Sat, 2013-06-01 at 18:23 +0100, Dirk Koopman wrote:
> On 01/06/13 18:03, Hakim Cassimally wrote:
> > Andy,
> >
> > I believe your problem is:
> >
> >      my $x = 'FOO' if $condition;
> >
> > This only declares the new variable if $condition, so it ends up having
> > surprising, static-like behaviour, which you probably shouldn't rely on.
> >
> > Rewriting to:
> >
> >     my $result;
> >     $result = 'FOO' if ...
> >
> > gives your expected result.

Thanks for all the replies.

I assume the above that everyone suggested is the cleanest way of
writing it? I try to avoid separately declaring variables where
possible, as IMHO it clutters the code.

> It is very annoying.

It certainly cost me a couple of hours of debugging time, especially as
it was an intermittent problem!

Andy




More information about the london.pm mailing list