You'll need to version 0.40 for this to work:
use Template::Extract;
my $template = <<'EOD';
[% FOR records %]
[% ... %]
OAMPG: [% oampg %] Extent ID [% extent_id %] on allocation page [%
+alloc_pg =~ /(\d+)/%]
[% END %]
EOD
my $doc = <<EOD;
OAMPG: 600 Extent ID 608 on allocation page 512
OAMPG: 128 Extent ID 616 on allocation page 512
EOD
use Data::Dump::Streamer;
Dump(Template::Extract->new->extract($template, $doc));
I'm not sure what the exact problem is with
Template::Extract but I suspect it is because it needs a trailing token for the match to halt.