use strict; use warnings; use Data::Dumper; my $file = "start<<<>>>middle<<<>>>end"; my @parts = split /<<<<(.+?)>>>>/, $file; print Dumper \@parts; #### $VAR1 = [ 'start', 'part2', 'middle', 'part3', 'end' ];