#bem, o seguinte código funcionou comigo:
local $/;
my @registros = split (/\s*- TESTE\s*/, <DATA>);
shift @registros;
$registros[-1] =~ s/- END TEST$//;
for my $i (0..$#registros) {
print "Registro $i:\n$registros[$i]\n";
}
__DATA__
- TESTE
bla bla bla
bla
- TESTE
bla
bla
bla
- TESTE
bla bla bla
- END TEST