Это, вероятно, не лучший способ для его захвата, если вы действительно не хотите, чтобы начальные, конечные, полные фразы, включая начало и конец, содержимое и т. Д. Оператор регулярного выражения возвращает результаты совпадений в контексте списка, и выиспользуйте это, чтобы сделать:
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
my $start = '<!--Start here-->';
my $end = '<!--End now-->';
my $string = "Lorem ipsum dolor sit amet, consectetur <!--Start here-->adipiscing elit. Maecenas gravida dictum erat et sollicitudin. Class aptent taciti sociosqu ad litora torquent per <!--End now-->conubia nostra, per inceptos himenaeos. <!--Start here-->Mauris ac elementum enim. <!--End now-->Etiam hendrerit accumsan sodales. Morbi mi tortor, adipiscing in interdum eu, volutpat quis neque. Aenean tincidunt ornare risus, id faucibus augue dictum ut. Nullam aliquet metus vel nibh ullamcorper ornare. Vestibulum a sapien augue. Praesent tellus nulla, congue non vestibulum eget, venenatis eu tellus. <!--Start here-->Donec varius porttitor blandit.<!--End now--> a sapien augue ipsum dolor.";
my @matches = ($string =~ m/$start(.+?)$end/g);
say for @matches;
Выходы:
adipiscing elit. Maecenas gravida dictum erat et sollicitudin. Class aptent taciti sociosqu ad litora torquent per
Mauris ac elementum enim.
Donec varius porttitor blandit.
т.е. не возиться с $1 $2 $3
и т. д.