可能是一个简单的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