可能是一個簡單的Perl問題:在Perl中,如何檢查未定義的OR空白參數?
我有一些類似於下面的代碼:
if (not defined $id) {
print "Enter ID number: ";
chomp ($id = <STDIN>);
exit 0 if ($id eq ""); # If empty string, exit.
}
if (not defined $name) {
print "Enter name: ";
chomp ($name = <STDIN>);
exit 0 if ($name eq ""); # If empty string, exit.
}
if (not defined $class) {
print "Enter class: ";
chomp ($class = <STDIN>);
exit 0 if ($class eq ""); # If empty string, exit.
}
我希望能夠通過可能只有其中的一些(例如姓名和班級,但不是ID ),通過毛坯的unpassed的,所以我想下面將工作:
if (not defined $id || $id eq "") {
print "Enter ID number: ";
chomp ($id = <STDIN>);
exit 0 if ($id eq ""); # If empty string, exit.
}
,但它似乎沒有如果我通過例如工作如下:
perl "myperlroutine.pl" "" "Mickey Mouse" "Entry"
命令窗口(我在Windows上運行這個)短暫出現,然後立即消失。
我錯過了一些明顯的東西嗎?
空白仍然定義。它只是空白。 – 2014-09-03 18:24:26
[ysth's answer](http://stackoverflow.com/a/25651344/176646)在你的邏輯中解決了這個問題,但是請看[如何簡明地檢查一個$變量是否被定義並且包含一個非零長度的字符串?] (http://stackoverflow.com/questions/1480066/in-perl-how-can-i-concisely-check-if-a-variable-is-defined-and-contains-a-non)替代解決方案。 – ThisSuitIsBlackNot 2014-09-03 18:50:10
感謝所有有用的答案。獎品歸屬於@ysth。戴夫克羅斯 - 如果我只是能夠改變這一點,但它已經被從多個地方調用,我有時間只做一個快速修復:( – roryhewitt 2014-09-04 19:25:03