in reply to How best to compare hash values?
Here's my attempt at an answer. Personally speaking, I love hashes. You just have to be aware of the limitations of which approach you take (array vs. hash).
I created a sub "isNull" as a homegrown replacement for "exists". The idea is to check your assumptions (and data) before you operate on that data.
#!/usr/bin/perl -w use strict; sub keyExists; # Begin Main my %hash1 = (); # Initialize empty hash. Perhaps unnecessary? %hash1 = ( "1", "20", "2", "20", "4", "19", "5", "20", "10", "20", "6", "18"); my %hash2 = (); # Initialize empty hash. Perhaps unnecessary? %hash2 = ( "1", "19", "2", "20", "4", "16", "5", "19", "6", "20"); foreach my $thisKey (sort keys %hash1) { # Check whether key from hash2 returns null to protect from undefi +ned key for hash2 if (isNull(\%hash2, $thisKey)) { print "hash2 contains null value for key: $thisKey", "\n"; } else { my $result = $hash1{$thisKey} - $hash2{$thisKey}; print "$thisKey $hash1{$thisKey} minus $hash2{$thisKey} equals + $result", "\n"; } } # End foreach exit 0; # End Main sub isNull { my $hashref = shift; # Reference to hash my $key = shift; # key to check my $rc = 0; if ($hashref->{$key}) { $rc = 0; # Hash returns non-null value } else { $rc = 1; # Hash returns Null value } return $rc; } # End sub isNull
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How best to compare hash values?
by toolic (Bishop) on May 06, 2010 at 16:44 UTC | |
by jimbass (Novice) on May 06, 2010 at 19:18 UTC | |
by elwarren (Priest) on May 06, 2010 at 22:08 UTC |