#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