Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
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
Domain Nodelet?
Node Status?
node history
Node Type: note [id://212267]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2023-02-05 20:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I prefer not to run the latest version of Perl because:







    Results (32 votes). Check out past polls.

    Notices?