你所說的 「初始化」 是什麼意思?具有不是「undef」的值?
對於少量值,直截了當,如果檢查是恕我直言,最易讀/可維護。
if (!$var1 || !$var2 || !$var3) {
print "ERROR: Some are not defined!";
}
順便說一句,檢查!$var
是在「0」的可能的錯誤是在Perl假,因此初始化爲「0」將失敗該檢查的字符串。這是一個很大更好地使用$var eq ""
或者更好的是,空間的東西出來> 3倍的值
if (!$var1 # Use this if your values are guarantee not to be "0"
|| $var2 eq "" # This is a LOT better since !$var fails on "0" value
|| $var3 eq "") {
print "ERROR: Some are not defined!";
}
如果有這麼多的值,檢查上面變得難以閱讀(儘管每行檢查在第二個例子中,它並沒有真正發生過),或者如果值存儲在陣列,您可以使用grep抽象掉了檢查:
# We use "length" check instead of "$_ eq ''" as per tchrist's comment below
if (grep { length } ($var1, $var2, $var3, $var4, $var5, @more_args)) {
print "ERROR: Some are not defined!";
}
如果你必須知道哪些的價值觀a再沒有定義,你可以使用循環(留給讀者一個明顯的鍛鍊; Tibial),或地圖招:
my $i = -1; # we will be pre-incrementing
if (my @undefined_indexes = map { $i++; $_ ?() : $i }
($var1, $var2, $var3, $var4, $var5, @more_args)) {
print "ERROR: Value # $_ not defined!\n" foreach @undefined_indexes;
}
來源
2010-11-10 09:24:20
DVK
如果您提供了一個當前如何操作的示例,那麼您可能會得到更多/更好的答案,包括在一個或多個尚未初始化時的適當反應。 (拋出一個錯誤?將它們設置爲默認值?等等) – 2010-11-10 09:30:10