>>519で、testサブルーチンの中の正規表現がどちらも真だった時、
どちらにも同じ値が代入されてしまいます。解決策を教えてください。

value2 => $_[1],
value3 => $_[1] =~ /(\S+)/ ? $1 : 0,
value4 => $_[2],
value5 => $_[2] =~ /(.)/ ? $1 : 0,

結果
'value4' => 'foo',
'value5' => 'f',
'value1' => 'hoge',
'value3' => 'f',
'value2' => 'fuga'

期待する結果は
'value4' => 'foo',
'value5' => 'foo',
'value1' => 'hoge',
'value3' => 'f',
'value2' => 'fuga'

環境:WindowsXP SP2, Active Perl v5.8.8 built for MSWin32-x86-multi-thread