電子書籍の厳選無料作品が豊富!

PerlでIF文の条件式をもっとスマートに書きたいのですが。。。
以下のようなIF文の条件式を上手く書く方法がありますでしょうか?

if($flg[0] == 1 || $flg[1] == 1 || $flg[2] == 1 || $flg[3] == 1 || $flg[4] == 1 || $flg[5] == 1 || $flg[6] == 1 || $flg[7] == 1 || $flg[8] == 1 || $flg[9] == 1)){

$flg[i]は配列@flgの各要素です。

上記のように「||」(論理和:または)でつないで書くのではなく、
もっとスマートに書きたいのですが、
何か良い方法はないでしょうか??

ご存じの方がいらっしゃいましたら、どうかご教示ください。
よろしくお願い致します。

A 回答 (3件)

新しい (5.10.1 以降の) Perl なら


if (1 ~~ @flg[0..9])
でよかったりする.

参考URL:http://perldoc.perl.org/perlop.html#Smartmatch-O …
    • good
    • 0

ちょっと呪文っぽいですが、こんなですかね。


配列のスライスとgrepを使ってます。

if(grep{ $_ == 1 } @flg[0 .. 9]){
    • good
    • 0

まず、思いつくのは grep を使う方法ですね。


http://www.ibm.com/developerworks/jp/linux/libra …

if ((grep { $_ == 1 } @flg) > 0) {
# 何らかの処理
}

@flg の要素が0か1だけなのであれば、↓の様な方法も有るかと。

if ((join '', @flg) > 0) {
# 何らかの処理
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!