my $starting_line = qr{ ^s [^\n]* \n }xsm; # starts with an 's' my $intervening_line = qr{ [^\n]* \n }xsm; # anything my $ending_line = qr{ e [ ] p \n }xsm; # ends with an 'e p' my $between = 1; my $line = do { local $/; }; # slurp all the data $line =~ s{ $start_line ${intervening_line}{$between} $end_line } {}gxsm; #### Random String s foo e f blah blah End of file