in reply to variable quantifiers?
>perl -wMstrict -le "my $c = 'A'; my $min = 3; ;; my $s = 'uuAvvAAwwAAAxxAAAAyy'; ;; printf qq{'$1' } while $s =~ m{ ([[:lower:]] (?:$c){$min,} [[:lower:] +]) }xmsg; " 'wAAAx' 'xAAAAy'
Update: The quantified sub-pattern in (?:$c){$min,} needs to be enclosed in a group (non-capturing or capturing) because otherwise $c{$min,} looks to Perl too much like the interpolation of a scalar hash element from the %c hash.
Further Update: Interesting. I was unaware of the \ (backslash) disambiguation pointed out below.
Further Further Update: Or maybe not so interesting, since the regex doesn't actually seem to match anything:
>perl -wMstrict -le "my $c = 'A'; my $min = 3; $_ = 'AAAAAA'; print 'match' if /($c\{$min,})/; print qq{'$1'}; " Use of uninitialized value $1 in concatenation (.) or string at -e lin +e 1. ''
Yet Another Update: It is also possible to use a constant, but it's kinda messy. A Readonly scalar might do a better job for you.
>perl -wMstrict -le "use constant MIN => 3; my $c = 'A'; ;; my $s = 'uuAvvAAwwAAAxxAAAAyy'; ;; printf qq{'$1' } while $s =~ m{ ([[:lower:]] (?:$c){${ \MIN },} [[:lower:]]) }xmsg; " 'wAAAx' 'xAAAAy'
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: variable quantifiers?
by Anonymous Monk on Jan 06, 2014 at 22:04 UTC |