Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: Diff on hashes

by Wonko the sane (Deacon)
on Nov 12, 2002 at 14:22 UTC ( #212263=note: print w/replies, xml ) Need Help??


in reply to Diff on hashes

How about this?

#!/usr/local/bin/perl -w use strict; use Data::Dumper; my %old_hash = ( '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 %new_hash = ( '1.1.1.1' => 'nfs,0', # index change '200.4.4.4' => 'cifs,0', # IP change '200.0.4.2' => 'afp,1', # IP change '3.3.3.3' => 'nfs,1', # index change '5.5.5.5' => 'afp,0', '4.22.2.22' => 'afp,2', # new entry ); my %changes; foreach my $key ( keys %new_hash ) { $changes{$key} = $new_hash{$key} unless ( (exists $old_hash{$key}) && $new_hash{$key} eq $old_h +ash{$key} ); # gotta check for existence to quiet warnings. } print Dumper( \%changes );
Outputs:
:!./test.pl $VAR1 = { '4.22.2.22' => 'afp,2', '1.1.1.1' => 'nfs,0', '3.3.3.3' => 'nfs,1', '200.4.4.4' => 'cifs,0', '200.0.4.2' => 'afp,1' };
Let me know if you see anything that it would miss.

Replies are listed 'Best First'.
Re: Re: Diff on hashes
by hotshot (Prior) on Nov 13, 2002 at 15:23 UTC
    Thanks for your answer, it's working almost perfectly. the thing is that it don't detect entries that were deleted from the old hash, do you have any idea how to change your solution so it'll handle that too?

    Hotshot

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://212263]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (3)
As of 2020-05-29 01:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If programming languages were movie genres, Perl would be:















    Results (166 votes). Check out past polls.

    Notices?