$key = @...[...]; <--- Wrong ^ ^ It may work because Perl is "smart", | | but Perl doesn't always guess correctly. +------+ $key = $...[...]; <--- Right ^ ^ | | +------+ #### # Wrong: print "hope 1 @{$months->[$i]}\n"; print "hope 2 $monthhash{trim(@{$months->[$i]})}\n"; print "hope 2A $monthhash{@{$months->[$i]}}\n"; # Right: print "hope 1 $months->[$i][0]\n"; print "hope 2 $monthhash{trim($months->[$i][0])}\n"; print "hope 2A $monthhash{$months->[$i][0]}\n";