Odd number of elements in hash assignment at ... #### use strict; use warnings; my $obj = bless do { \my $x }, __PACKAGE__; # current package, e.g. 'main' print "wrong:\n"; $obj->wrong(name =>'John', age => 28); print "-" x 50, "\n"; print "right:\n"; $obj->right(name =>'Paul', age => 30); sub wrong { warn +(caller(0))[3],'(',join(',',map "'$_'", @_),")\n"; my %h = @_; print "$_ => $h{$_}\n" for keys %h; } sub right { warn +(caller(0))[3],'(',join(',',map "'$_'", @_),")\n"; my $self = shift; my %h = @_; print "$_ => $h{$_}\n" for keys %h; } __END__ wrong: main::wrong('main=SCALAR(0x8167870)','name','John','age','28') Odd number of elements in hash assignment at - line 17. Use of uninitialized value in concatenation (.) or string at - line 18. 28 => John => age main=SCALAR(0x8167870) => name -------------------------------------------------- right: main::right('main=SCALAR(0x8167870)','name','Paul','age','30') name => Paul age => 30 #### if(!$data{$match}) { $data{$match}++; $count = $count + 1; }