in reply to Strange Regex Behavior
The "$1" forces a copy. Or you could swap the assignment:
Or not use $1:hash = ( b => ($b =~ /\d/ ? 1 : 0), a => ($b =~ /(\d+)/ ? $1 : 0), );
It's related to the problem when passing $1 to a subroutine:hash = ( a => ($b =~ /(\d+)/)[0] || 0, b => ($b =~ /\d/ ? 1 : 0) );
$1 really is valid only till the next successful match.$ 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 $
|
|---|