in reply to Regex Capturing: Is this a bug or a feature?

I've always taken this to mean they are "local" scoped to a block just as if you has said local($1), apparently this is not the case. Or at least not the case on my build of Perl v5.6.1

Yes, it's not "local", for local also localizes a variable for one loop iteration. May be this behaviuor is not perfectly documented, but in fact I've never had any problems with that so far. You should not work with these variables anyway, but use your own for better control.

our $x = 0; foreach(@values){ local $x; /m(\w+)\.(\d+)/ and my ($f,$s) = ($1,$2); print "-- $_: $1;$s; ",$x++,"\n" }
--
http://fruiture.de

Replies are listed 'Best First'.
Re: Re: Regex Capturing: Is this a bug or a feature?
by shotgunefx (Parson) on Sep 28, 2002 at 15:10 UTC
    The code above is stripped down to an example. I do find this behaviour quite suprising and very NWIM. I would go so far to say that it's documentated incorrectly (at the very least, poorly). Both are described as dynamic scoping.

    Looking at perlsub and local() This is known as dynamic scoping. Lexical scoping is ...

    -Lee

    "To be civilized is to deny one's nature."

      Well, the documentation doesn't say they're scoped like "local" would do :-)

      In a way you're right, but imho there is no problem arising from this issue if you always use your own variables instead of $1 .. $n. (Which means you assign your own vars immediately after the match).

      --
      http://fruiture.de
        Well there is no problem if and ONLY if you conditionally assign based on the match.

        I'm not complaining about how it works, more about how it's documented. dynamic and local() are equated many times in the perlpods.

        -Lee

        "To be civilized is to deny one's nature."