open(my $fh, "<+", "your_file") or die("ack: $!"); my @data = <$fh>; seek $fh, 0, 0; my $newsize = 0; for(@data) { next unless /\bsome string\b/; print $fh; $newsize += length; } truncate $fh, $newsize; close $fh;