Cirollo has asked for the wisdom of the Perl Monks concerning the following question:
I'm trying to use a code evaluation assertion in a regex inside of a subroutine, and I'm seeing this strange behavior where it only executes the code the first time that I call the subroutine. Here is the simplest example I could come up with:
The output that I get is "1...." when I would expect to get "1.1.1.1.1." As I understand it, the value 1 should get assigned to $ret every time through the regex, regardless of whether ^(a) matched. Can anyone explain this? I'm rather confused.sub regex { my $in = shift; my $ret = ''; # Assign something to $ret in a code assertion $in =~ m/^(a)(?{$ret=1})/; return $ret; } while(<DATA>) { print regex($_) . "."; } __DATA__ a b a abcd bcda
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Scoping issues with code evaluation asserstions?
by sauoq (Abbot) on Jun 19, 2003 at 17:05 UTC | |
by Cirollo (Friar) on Jun 19, 2003 at 18:56 UTC | |
by diotalevi (Canon) on Jun 19, 2003 at 19:08 UTC | |
by sauoq (Abbot) on Jun 19, 2003 at 19:11 UTC | |
by diotalevi (Canon) on Jun 19, 2003 at 19:17 UTC | |
by sauoq (Abbot) on Jun 19, 2003 at 19:34 UTC | |
Re: Scoping issues with code evaluation asserstions?
by pernod (Chaplain) on Jun 20, 2003 at 09:48 UTC | |
Re: Scoping issues with code evaluation asserstions?
by aquarium (Curate) on Jun 19, 2003 at 22:49 UTC |
Back to
Seekers of Perl Wisdom