## UNTESTED use File::Temp 'tempfile'; use File::Copy; my ($tmp_FH,$tmp_fn) = tempfile(); open(IN, '<', $ifile) or die "Couldn't open file: $!\n"; my @data = ; close IN; foreach my $line (@data) { ### Do what you want print $tmp_FH "$line"; } copy($tmp_fn,$ifile);