I feel that writing
my $x = 5 if (1);
should cast a warning (when
warnings are enabled), similarly as this would in perl 5.10:
$ /usr/local/bin/perl5.10.0 -w
my $x if (0);
__END__
Deprecated use of my() in false conditional at - line 1.
See
perlsyn.
It specifically says:
NOTE: The behaviour of a my statement modified with a statement modifier conditional or loop construct (e.g. my $x if ...) is undefined. The value of the my variable may be undef, any previously assigned value, or possibly anything else. Don't rely on it. Future versions of perl might do something different from the version of perl you try it out on. Here be dragons.
See also
Re^2: Assign in loop with and without declaration for a related discussion.
--
No matter how great and destructive your problems may seem now, remember, you've probably only seen the tip of them. [1]