use warnings; use strict; my @wanted_substrings; { local $/ = 'END'; while(my $string = ) { push @wanted_substrings, ($string =~ /START(.*)END/); } } print "@wanted_substrings"; __DATA__ somecharSTARTfvENDsomecharSTARTsvENDsomecharSTARTtvENDsomechar