5

私はGetopt::StdPerl スクリプトで使用しており、値としてゼロを渡したいと考えています。を使用して値が正しく設定されていることを確認していますunless()。現時点unless()では、値が設定されていないとして拒否しています。

ゼロを有効な値として受け入れる方法はありunless()ますか (負でない整数は有効です)。

これはおそらく完全に単純ですが、私は数日前まで Perl に触れたことがありません!

リッチ

4

2 に答える 2

10

Perl ではゼロは false であるため、unless defined <SOMETHING> 代わりにを使用する必要があります。unless <SOMETHING>

于 2010-09-07T15:17:09.807 に答える
4

Perl 5 にはいくつかの false 値があります: 0, "0", "", .undef()

間違っているように見えてもそうではないものがあることに注意することが重要です。たとえば0.0、 は と同等の数値であるため false ですが、そうで0"0.0"ありません (false である文字列は空の文字列 ( "") とのみ"0"です)。

また、定義の概念もあります。値 (undef 以外) が割り当てられている変数は、定義されていると言われ、defined関数でテストすると true を返します。

引数を負でない整数にしたい場合は、おそらくそれをテストする方が良いでしょう:

unless (defined $value and $value =~ /^[0-9]+$/) {
    #blah
}
于 2010-09-07T15:41:21.283 に答える