Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Diff on hashes

by robartes (Priest)
on Nov 12, 2002 at 14:31 UTC ( #212267=note: print w/replies, xml ) Need Help??


in reply to Diff on hashes

I've recently done something similar in an environment where I can't use modules for various reasons, some of them even valid. Basically, you delete entries that are common to both hashes from both hashes. The hash with old entries will end up with the entries to delete, the one with new entries with the entries to add. A modification of an entry will become a delete/create.
use strict; use Data::Dumper; my %oldhash=( '1.1.1.1' => 'nfs,1', '4.4.4.4' => 'cifs,0', '10.0.4.2' => 'afp,1', '3.3.3.3' => 'nfs,0', '5.5.5.5' => 'afp,0', ); my %newhash=( '1.1.1.1' => 'nfs,1', '7.7.7.7' => 'cifs,0', '10.0.4.2' => 'afp,2', '3.3.3.3' => 'nfs,0', '5.5.5.5' => 'afp,0', '6.6.6.6' => 'cifs,1', ); foreach my $ip (keys %newhash) { if (exists($oldhash{$ip}) && $newhash{$ip} eq $oldhash{$ip}) { delete $oldhash{$ip}; delete $newhash{$ip}; } } print "Entries to remove:\n"; print Dumper(\%oldhash); print "Entries to add:\n"; print Dumper(\%newhash);
Note that your current data structure is limited: if you have an IP that serves multiple protocols, you'll need to step up to a HoA or a HoH (and my code above will break).

CU
Robartes-

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://212267]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (4)
As of 2018-04-22 16:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?