use strict; use warnings; while () { print unless ( /^Header1$/ .. /^END LIST$/ ); } __DATA__ Header1 1 2 3 4 5 3 2 43 43 END LIST Header2 2 42 24 2 32 2 32 2 2 4 2 3 END LIST Header1 2 43 43 END LIST Header3 2 3 4 32 3 4 3 43 END LIST Header1 1 2 3 4 5 3 2 43 43 END LIST #### perl -ni.bak -e 'print unless ( /^Header1$/ .. /^END LIST$/)' filename #### my $text = do { local $/; }; if ($text =~ /^Header1.*?END LIST/m) { .... } #### my $text = do { local $/; }; $text =~ s/^Header1.*?END LIST\n?//msg