#!/usr/bin/perl use strict; use warnings; my $master = 'master.txt'; my $newmaster = 'master.tmp'; my $update = 'update.txt'; open my $updatefh, '<', $update or die "$update: $!"; my %updates; my @updates; foreach my $line (<$updatefh>) { my $key = substr($line,3,12); $updates{$key} = $line; push(@updates, $key); } close($updatefh); open my $masterfh, '<', $master or die "$master: $!"; open my $newmasterfh, '>', $newmaster or die "$newmaster: $!"; foreach my $line (<$masterfh>) { my $key = substr($line,3,12); if(exists($updates{$key})) { print $newmasterfh $updates{$key}; delete($updates{$key}); } else { print $newmasterfh $line; } } close($masterfh); foreach my $key (@updates) { if(exists($updates{$key})) { print $newmasterfh $updates{$key}; } } close($newmasterfh);