defined的一个小问题

defined的一个小问题

$madonna=undef;
($madonna = <STDIN>);
if(defined($madonna)) {
  print "The input was $madonna";
} else {
  print "No input available!\n";
}

为什么IF出来的值总是为真的呢?有输入还是直接回车也是一样的?这可是从书本上的例子哦。
$madonna=undef;
chomp
这两句是我自己加的。
你用defined判断时,即便只输入回车,变量值也是回车,所以为真,chomp之后虽然值为空,但是已经是defined的了。
你的程序运行时,输入ctrl+z,就为假了。
如果你不用defined判断,就不一样了:

QUOTE:
$madonna = <STDIN>;
chomp $madonna;
if($madonna) {
  print "The input was $madonna";
} else {
  print "No input available!\n";
}

呵呵,这个代码可以实现哦~~看来,书本也有错的时候。~~