Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Diff on hashes

by reyjrar (Hermit)
on Nov 12, 2002 at 14:24 UTC ( #212264=note: print w/replies, xml ) Need Help??


in reply to Diff on hashes

with perl, TIMTOWTDI :)

my %current,%last; my %keys; map { $keys{$_}; } keys %current, keys %last; my %changes = (); foreach my $k (keys %keys) { $changes{$k} = $current{$k} unless $current{$k} eq $last{$k}; }
I suppose you could get fancier than that, that'll give you a hash of ips => services if they vary from the previous. Creating the %keys hash allows you to add or subtract ips from your set without causing problems. When you go to act on the %changes hash, just check for an undef() value for that key, if its undef, then decide what to do. If you want to add the ability to stop "watching" an ip's service and leave it as is, you could do this:
my %current,%last,%keys; foreach my $k (keys %current,keys %last) { next unless(exists $current{$k}); $keys{$k} = 1; }

Of course, if you wanted to report the IPs that were removed, you could instead push them onto an array of @removed_ips or something like that. You could do the same for services using values() instead of keys().

Sounds like an interesting project, hope you have fun with it.

-brad..

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (6)
As of 2020-05-30 12:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If programming languages were movie genres, Perl would be:















    Results (171 votes). Check out past polls.

    Notices?