小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

代入文と||論理演算子

Perlでは、代入文に『||』論理演算子が繋がる構文がよくあります。
これは、代入文の右側の『||』で繋がれたもの達で、左から順に 真 を返したものが、代入文の左側に代入されます。

代入文の左側 = 代入文の右側1 || 代入文の右側2 || 代入文の右側3;

tstans.plソース

$ans = &aaa() || &bbb() || &ccc();
print $ans, "\n";

sub aaa {
    return "0";
}
sub bbb {
    return "0";
}
sub ccc {
    return "ccc";
}

tstans.pl実行

$ tstans.pl
ccc

ちなみに、||論理演算子でなくor論理演算子では、優先順位の関係で上記の構文は不可です。
また、Perlの場合の文字列の偽は『""』と『"0"』で、これ以外は 真 です。

スカラー値は、その値が空文字列か数値の 0 (あるいは同値な文字列``0'') 以外の場合には、ブール値の真として扱われます。

http://www.kt.rim.or.jp/~kbk/perl5.005/perldata.html#Scalar_values