The only one that is syntactically valid is the second one, however, I don't believe that it is doing what you are expecting. Since the parens denote precedence, what Perl reads it as is:
my %sham = ( 1 => "j", 2 => "b", 1 => "p", 2 => "b", );
When assigning to hashes, later insertions with the same key end up replacing any earlier entries with the same key, leaving you with:
my %sham = ( 1 => "p", 2 => "b", );
This can be shown with the use of Data::Dumper or the like. I think what you are intending is:
my @sham = ( # note the sigil { 1 => "j", 2 => "b", }, { 1 => "p", 2 => "b", }, );
Data::Dumper (and any similar module) is a useful tool for visualizing nested data structures.
--MidLifeXis
In reply to Re: Difference in Hash Declaration
by MidLifeXis
in thread Difference in Hash Declaration
by perl@1983
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |