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
In reply to Re: How best to compare hash values?
by jerryg
in thread How best to compare hash values?
by jimbass
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |