in reply to This is really a Perl BUG with my?! Need some advice...

This is not a bug. If Perl behaved in a way contrary to defined behavior, that's a bug. But failure to behaive how you expect, having not read (or remembered) the perldocs, doesn't constitute a bug.

From perlsub:

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.

The way it does behaive when attached to an 'if' modifier is simply a side-effect of how my is implemented, but as the perldocs state, it's a side effect that you should not count on, and a construct that you shouldn't use; "Here be dragons."


Dave

  • Comment on Re: This is really a Perl BUG with my?! Need some advice...

Replies are listed 'Best First'.
Re: Re: This is really a Perl BUG with my?! Need some advice...
by ysth (Canon) on Jan 25, 2004 at 06:24 UTC
    If I recall correctly, there has been talk about fixing this so my $x ... if ... acts like my $x; $x ... if .... I originally had a negative reaction to that, since the my $x if 0 had been advocated by some as a valid way to produce a semi-static variable, but now, given that that warning has been in the doc since 5.8.0, I think its a good idea. People mess themselves up by accident too much to care about those intentionally doing it. (The doc warning should probably be added to 5.6.2, also.)