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
my @ar = qw/ foo bar baz /; my %hash = ( one => @ar ); print $hash{one}; __output__ foo
This is because hash values can only store scalar variables, so you need to assign the hash value to an array reference e.g
my @ar = qw/ foo bar baz /; my %hash = ( one => \@ar ); print @{ $hash{one} }; __output__ foobarbaz
As for the comparison code you can use davorg's Array::Compare
use 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
Or even the Test::More utility method eq_array e.g
use Test::More; ## assuming data in above example print "the same" if eq_array([sort @{ $hash{one} }], [sort @{ $hash{two} } ]); __output__ the same

HTH

_________
broquaint