perlの文法についての質問です。

if(@hogehoge){
 ~~~
}
上記のような構文があったのですが、ifの条件式はTrueもしくはFalseを判定するものと思いますが、この場合、@hogehogeという配列をどういう基準でTrueもしくはFalseとして扱うのですが

回答の条件
  • 1人2回まで
  • 登録:2008/01/05 00:14:09
  • 終了:2008/01/05 00:40:20

回答(2件)

id:xtal_0617 No.1

xtal_0617回答回数1ベストアンサー獲得回数02008/01/05 00:22:56

ポイント35pt

どことなくうろ覚えですが…

ifにおける評価はスカラーコンテキストで評価されるので、

@hogehogeの要素数が判定対象になると思います。

Perlでは0を偽と判定するので、

  • @hogehogeが空⇒偽
  • @hogehogeに要素有⇒真

となるのではないでしょうか?

id:n_maco2

なるほど、ありがとうございます

2008/01/05 00:39:39
id:tkyk3 No.2

tkyk3回答回数59ベストアンサー獲得回数62008/01/05 00:26:21

ポイント35pt

要素数で比較します。

0だとFalse、0以外はTrueなので、

my @array = ( 'one', 'nyan', 'chu' );
my $num = @array; # $numは3(個)
if ( @array ) {
    print "配列数は$num個です。";
}

間違っていたらすみません。

id:n_maco2

わかりやすいサンプルありがとうございます

2008/01/05 00:40:15

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません