in reply to How to compare hash value
Myhash value is composed of an array, and for each array have different amount of element, like ...If you're setting up your hash values as you are in your example code then you won't get what you expected, the hash value will only contain the first element of the array e.g
This is because hash values can only store scalar variables, so you need to assign the hash value to an array reference e.gmy @ar = qw/ foo bar baz /; my %hash = ( one => @ar ); print $hash{one}; __output__ foo
As for the comparison code you can use davorg's Array::Comparemy @ar = qw/ foo bar baz /; my %hash = ( one => \@ar ); print @{ $hash{one} }; __output__ foobarbaz
Or even the Test::More utility method eq_array e.guse Array::Compare; my %hash = ( one => [ qw/ foo bar baz / ], two => [ qw/ baz foo bar / ], ); print "the same" if Array::Compare->new()->perm(@hash{qw/one two/}); __output__ the same
use Test::More; ## assuming data in above example print "the same" if eq_array([sort @{ $hash{one} }], [sort @{ $hash{two} } ]); __output__ the same
_________
broquaint
|
|---|