my $file = "$file_path/file.lst"; my $newid = "500.0.0.0" open MAST, $file or die "Unable to open file.lst: $!"; my $new = "$file.tmp.$$"; my $bak = "$file.bak"; open(NEW, "> $new") or die "can't open $new: $!"; while () { my ($pattern,$id) = (split /\s+/, $_)[0,4]; print $_; if ( $_ =~ m/^$pattern/ ) { $_ =~ s/$id/$newid/g; } (print NEW $_) or die "can't write to $new: $!"; } close(MAST) or die "can't close $file: $!"; close(NEW) or die "can't close $new: $!"; rename($file, $bak) or die "can't rename $file to $bak: $!"; rename($new, $file) or die "can't rename $new to $file: $!";