in reply to Re: Assign in loop with and without declaration
in thread Assign in loop with and without declaration

Thank you for directing me to the documentation that 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.
My follow-up question is: Should there not at least be a warning issued when one attempts something as unpredictable as this?
--
No matter how great and destructive your problems may seem now, remember, you've probably only seen the tip of them. [1]

Replies are listed 'Best First'.
Re^3: Assign in loop with and without declaration
by Anonymous Monk on May 22, 2008 at 09:53 UTC
      Ah.. so a warning was added for perl v5.9.1 (perl591delta), nice.

      Do you think the warning

      "Deprecated use of my() in false conditional"
      should be extended to
      "Deprecated use of my() in false conditional or loop"
      which would then trigger for both of the following cases:
      $ /usr/local/bin/perl5.10.0 -w my $x if 0 __END__ Deprecated use of my() in false conditional at - line 2. $ /usr/local/bin/perl5.10.0 -w my $x = $_ for (1 .. 3); __END__
      --
      No matter how great and destructive your problems may seem now, remember, you've probably only seen the tip of them. [1]
        "Deprecated use of my() in false conditional or loop"

        If such a warning is considered, it would be better phrased as

        "Deprecated use of my() in loop or false conditional"

        Be well,
        rir