use warnings; use strict; use File::Temp "tempfile"; my $i = "yourfile.txt"; # filename my ($O, $o) = tempfile; open my $I, $i or die "open: $!"; while (<$I>) { s/foo/bar/g; print $O $_; } close $O or die; rename $o, $i; __END__