perl -pe '$skip=0 if /^end$/; next if $skip; $skip=1 if /^begin$/' data.txt #### #!/usr/bin/perl use warnings; use strict; my $skip=0; while() { $skip=0 if /^end$; print unless $skip; $skip=1 if /^begin$/; } __DATA__ a begin 1 <----- delete a <----- delete 2 <----- delete end c begin c end a begin 1