This comment is reply for 5958 匿名: お題投稿者ではありませんが、勝手に答える...(変数の初期値). Go to thread root.
lunlumo #6436(2008/06/04 10:45 GMT) Rating0/0=0.00
[ reply ]
lunlumo #6436() Rating0/0=0.00
>というコードは$varという変数がnilのときだけ'foo'を代入するもので
であれば余り問題は無いのですが,このコードは以下のコードと同じ意味になります。
my $var = $var || 'foo'; #||は短絡演算子
問題中にある様に変数の宣言と一緒にやる場合には然程問題になりませんが,perlでは0は偽として評価されるので,値が設定されていない場合に初期値を設定する意図で使用するケースで,以下の様に問題が出る場合があるのです。
my $var;
[..snip..]
$var = 0;
[..snip..]
$var ||= 1; #0が設定されている場合は0のままとするつもり