Интересно. perlsyn состояния:
Любой ~~
Соответствие регулярному выражению $a =~ /$b/
так что, на первый взгляд, разумно ожидать
use strict; use warnings;
use 5.010;
my $string = '12 23 34 45 5464 46';
while ( $string ~~ /(\d\d)\s/g ) {
say $1;
}
для печати 12
, 23
и т. Д., Но он застревает в цикле, повторяя 12
. Использование:
$ perl -MO=Deparse y.pl
выходы
while ($string ~~ qr/(\d\d)\s/g) {
say $1;
}
глядя на perlop , мы замечаем
qr/STRING/msixpo
Обратите внимание, что 'g' не указан в качестве модификатора (логично, для меня).
Интересно, если вы напишите:
my $re = qr/(\d\d)\s/g;
perl
barfs:
Bareword found where operator expected at C:\Temp\y.pl line 5,
near "qr/(\d\d)\s/g"
syntax error at C:\Temp\y.pl line 5, near "qr/(\d\d)\s/g"
и, вероятно, он также должен что-то сказать, если в приведенном выше коде используется недопустимое выражение