in reply to Search, Match, Compare, and Report
sub load { my ($qfn) = @_; open(my $fh, '<', $qfn) or die("Can't open file \"$qfn\": $!\n"); my %data; local *_; while (<$fh>) { my ($id) = /^(\S+)/ or next; die("Duplicate key $id\n") if exists($data{$id}); $data{$id} = $_; } return \%data; } my $master = eval { load(...) } or die("Can't load master db: $@"); my $new = eval { load(...) } or die("Can't load new db: $@"); my %ids; for my $id (keys(%$master), keys(%$new)) { next if $ids{$id}++; if (!exists($new->{$id})) { print("-$master->{$id}"); } elsif (!exists($master->{$id})) { print("+$new->{$id}"); } elsif ($master->{$id} ne $new->{$id}) { print("-$master->{$id}"); print("+$new->{$id}"); } else { print("=$master->{$id}"); } }
Update: Added missing parens and fixed var name as per reply.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Search, Match, Compare, and Report
by ahmad (Hermit) on Jan 31, 2010 at 23:24 UTC | |
by ikegami (Patriarch) on Feb 01, 2010 at 03:11 UTC | |
by ahmad (Hermit) on Feb 01, 2010 at 12:29 UTC | |
|
Re^2: Search, Match, Compare, and Report
by kirkbrown (Novice) on Feb 02, 2010 at 03:02 UTC | |
by ikegami (Patriarch) on Feb 02, 2010 at 17:43 UTC |