use warnings; use strict; print "program running \n"; # these compile and run WITHOUT any warnings na_anon ({ one => 'uno', two => 'dos', => }); na_anon ({ one => 'uno', two => 'dos', , }); na_anon ({ one => 'uno', => two => 'dos' }); na_anon ({ one => 'uno', , two => 'dos' }); na_anon ({ one => 'uno', => => two => 'dos' }); na_anon ({ one => 'uno', , , two => 'dos' }); na_assign( one => 'ein', two => 'zwei', => ); na_assign( one => 'ein', two => 'zwei', , ); na_assign( one => 'ein', => two => 'zwei' ); na_assign( one => 'ein', , two => 'zwei' ); na_assign( one => 'ein', => => two => 'zwei' ); na_assign( one => 'ein', , , two => 'zwei' ); # these compile and run WITH run-time warnings na_anon ({ one => 'uno', two => 'dos', three => }); na_anon ({ one => 'uno', two => 'dos', three => 20..21 }); na_assign( one => 'ein', two => 'zwei', three => ); na_assign( one => 'ein', two => 'zwei', three => 20..21 ); print "program done \n"; sub na_anon { my %args = %{ $_[0] }; my $n = 'one'; print "anon hash: $n translates to $args{$n} \n"; } sub na_assign { my %args = @_; my $n = 'two'; print "hash assign: $n translates to $args{$n} \n"; } #### >perl np_ah_vs_ha_1.pl program running anon hash: one translates to uno anon hash: one translates to uno anon hash: one translates to uno anon hash: one translates to uno anon hash: one translates to uno anon hash: one translates to uno hash assign: two translates to zwei hash assign: two translates to zwei hash assign: two translates to zwei hash assign: two translates to zwei hash assign: two translates to zwei hash assign: two translates to zwei Odd number of elements in anonymous hash at np_ah_vs_ha_1.pl line 71. anon hash: one translates to uno Odd number of elements in anonymous hash at np_ah_vs_ha_1.pl line 72. anon hash: one translates to uno Odd number of elements in hash assignment at np_ah_vs_ha_1.pl line 85. hash assign: two translates to zwei Odd number of elements in hash assignment at np_ah_vs_ha_1.pl line 85. hash assign: two translates to zwei program done