http://www.perlmonks.org?node_id=530202


in reply to Re^3: getting a regex to return an array of matches?
in thread getting a regex to return an array of matches?

not following here?
my $var = $1 if ($filecontents =~ /SOME_REGEX(.*?)$/g); if($var) { ... proceed w/ usage of $var }
why pre-declare, then use?

Replies are listed 'Best First'.
Re^5: getting a regex to return an array of matches?
by ikegami (Patriarch) on Feb 14, 2006 at 19:03 UTC
    Because my with a conditional is buggy (and makes no sense). In your case, the following will do nicely:
    my ($var) = $filecontents =~ /SOME_REGEX(.*?)$/g; if (defined $var) { ... proceed w/ usage of $var }
Re^5: getting a regex to return an array of matches?
by PodMaster (Abbot) on Feb 15, 2006 at 05:13 UTC
    Now the warning resides in perlsyn, and it 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.
    So don't do that!! :)

    'my' buggy... and my $cache = undef if undef; hit upon that.

    MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
    I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
    ** The third rule of perl club is a statement of fact: pod is sexy.