%hash =( a => ($b =~ /(\d+)/ ? $1 : 0), b => "test b", ); print "$_=#$hash{$_}#\n" for keys %hash; #### %hash = ( a => (($b =~ /(?\d+)/) ? $+{tag} : 0), b => (($b =~ /(?test)/) ? $+{tag} : 0), ); print "$_=#$hash{$_}#\n" for keys %hash;