У меня есть код, который захватывает «между» некоторым текстом; в частности, между foo $someword
и следующим foo $someword
.
Однако происходит то, что он застревает на первом «между» и каким-то образом внутренняя позиция строки не увеличивается.
Входные данные представляют собой текстовый файл с новыми строками здесь и там: они не имеют значения, но облегчают печать.
my $component = qr'foo (\w+?)\s*?{';
while($text =~ /$component/sg)
{
push @baz, $1; #grab the $someword
}
my $list = join( "|", @baz);
my $re = qr/$list/; #create a list of $somewords
#Try to grab everything between the foo $somewords;
# or if there's no $foo someword, grab what's left.
while($text=~/($re)(.+?)foo ($re|\z|\Z)/ms)
#if I take out s, it doesn't repeat, but nothing gets grabbed.
{
# print pos($text), "\n"; #this is undef...that's a clue I'm certain.
print $1, ":", $2; #prints the someword and what was grabbed.
print "\n", '-' x 20, "\n";
}