Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

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.


Log In?

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2023-02-02 15:05 GMT
Find Nodes?
    Voting Booth?
    I prefer not to run the latest version of Perl because:

    Results (19 votes). Check out past polls.