hash = ( b => ($b =~ /\d/ ? 1 : 0), a => ($b =~ /(\d+)/ ? $1 : 0), ); #### hash = ( a => ($b =~ /(\d+)/)[0] || 0, b => ($b =~ /\d/ ? 1 : 0) ); #### $ perl -wE 'sub f {say @_} 3 =~ /(\d)/; f $1' 3 $ perl -wE 'sub f {"1" =~ "1"; say @_} 3 =~ /(\d)/; f $1' Use of uninitialized value $_[0] in say at -e line 1. $ perl -wE 'sub f {"1" =~ "1"; say @_} 3 =~ /(\d)/; f "$1"' 3 $