I have a regex that matches parts of a date and then sticks the matches into $year $month and $day variables. In stead of using the standard $1, $2, $3 variables I wanted to play with embedding perl code into the regex.
The regex works just great on a single pass. If I stick the regex in a sub and access it more than once, then the $year,$month and $day variables only get filled on the first time it is accessed. Here is code:
#!/usr/bin/perl use Data::Dumper; use strict; #use re 'debug'; my $foo_year = "2004-11-12 12:40:42"; test($foo_year); test($foo_year); test($foo_year); sub test { my ($date) = @_; print $date,"\n"; my ($year,$month,$day); $date =~ m/ (\d+) (?{ $year = $^N }) - (\d+) (?{ $month = $^N }) - (\d+) (?{ $day = $^N }) /x; print "$year-$month-$day\n"; }
It seems like $^N isn't getting set on subsequent calls to the regex.
In reply to regex and embedded perl code by neybar
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |