3

テストケースに合格または不合格にする必要があるスクリプトを書いています。したがって、 undef になる変数に値があります。

私はこのようなものをチェックしています:

$valハッシュの配列がある があります。今、その配列が空かどうかを確認しています:

if(@$val<=0){do something}

その場合$val = undef、これはエラーをスローします。

未定義の値を ARRAY 参照として使用できません

my$valが空かどうかを確認するにはどうすればよいですか?

4

4 に答える 4

5

スカラーがundefであるかどうかを確認する場合は、defined演算子を使用します。

if ( not defined $val ) { 
    # do something
}
于 2013-01-31T18:27:37.290 に答える
2

あなたが尋ねているかもしれない質問に答えるには2つの部分があります。

まず、無条件に配列参照を作成します。undef渡される可能性がある場合$valは、コード内で。などを使用して空の配列参照にプロモートします$val // []

@$val次に、がゼロ以外であるかどうかを確認します。ゼロ以外は、配列に要素があることを示します。従来、これは真実のテストとして表現されています。

unless (@{ $val // [] }) {
    ... # stuff to do if the array is empty
}
于 2013-01-31T18:27:24.847 に答える
1

使用する

 use strict;
 use warnings;

ファイルの先頭にあると、おそらく問題の内容がわかります。

于 2013-01-31T18:23:16.987 に答える
-1

これには「exists」関数を試すことができます: http://perldoc.perl.org/functions/exists.html

この関数は、配列参照がハッシュの配列に存在するかどうかを確認します

    if(exists @$val<=0) {do something}
    else {print "$val is an undefined reference";}
于 2015-03-01T14:34:48.220 に答える