perl -MO=Deparse -e '%a=("a",1,"b",2); print "ok" if exists $a{a} && 1+exists $a{b}' # (%a) = ('a', 1, 'b', 2); # print 'ok' if exists $a{'a'} and 1 + exists($a{'b'}); # NOTE above interesting and _misleading_ choice of parens, _plus_ translation to 'and' perl -MO=Deparse -e '%a=("a",1,"b",2); print "ok" if exists($a{a} && 1+exists $a{b})' # exists argument is not a HASH or ARRAY element at -e line 1. # NOTE same error of course w/o Deparse, also when I move ')' behind '1'.