Assuming your file isn't too big (i.e will comfortably fit in memory)
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;
Or if the file is too big to be read entirely into memory
open(my $read, "<", "your_file") or die("ack: $!");
open(my $write, ">", "tmpfile$$") or die("ack: $!");
while(<$read>) {
next unless /\b some string\b/;
print $write;
}
close $read;
close $write;
rename $write, $read;
See. perlopentut and perlfunc for more info.
HTH
_________ broquaint |