Use the built-in Perl feature for
input record separator splitting, perhaps?
use warnings;
use strict;
use Data::Dumper;
{
local $/ = "\nXXX\n";
while (my $record = <DATA>) {
# remove the separator from the record
$record =~ s{\Q$/\E$}{};
print Dumper $record;
# process the record here
}
};
__DATA__
This is a test.
XXX
This is a multiline
test.
XXX
$VAR1 = 'This is a test.';
$VAR1 = 'This is a multiline
test.';
This may be useful if your file becomes impractical to fit in the RAM and you only need to process it record-by-record.