perl -i.bak -pe 's/hello/goodbye/gi' file1 file2 ... #### use Fcntl qw(:seek); open (FOO, "+<$foo") or die "Can't open $foo: $!"; my $slurp = join '', ; $slurp =~ s/hello/goodbye/sgi; seek FOO, 0, SEEK_SET; print FOO $slurp; truncate FOO, tell FOO; close FOO;