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


In reply to Re: How to compare hash value by broquaint
in thread How to compare hash value by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.