use IO::InSitu; my ($in, $out) = open_rw($infile_name, $outfile_name); for my $line (<$in>) { $line =~ s/foo/bar/g; print {$out} $line; }