永发信息网

perl中的defined用来判断某个变量是否为空??求解defined有什么用?

答案:4  悬赏:70  手机版
解决时间 2021-04-08 00:57
  • 提问者网友:欺烟
  • 2021-04-07 10:36
perl中的defined用来判断某个变量是否为空??求解defined有什么用?
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-04-07 11:05
$a=;
chomp $a;
if(defined($a)and $a ne""){
print "The input was $a";
}
else{
print "No input avaiable!";
}
#这样就行了 ,我觉得defined这个关键字用在判断从输入获取值这个例子是不合适的,不管有没有输入,它总要被"\n"初始化.因此用$a ne""判断即可
$a=;
chomp $a;
if($a ne""){
print "The input was $a";
}
else{
print "No input avaiable!";
}
全部回答
  • 1楼网友:北城痞子
  • 2021-04-07 13:17
我觉得这些回答都不准确
这个《perl入门》里面的例子是有问题的,首先你看这一版本来就有一个错误。
defined是perl的函数,所以显然不应该有“$”不然就成了变量了~
然后我们再说这个例子,这个例子根本不可会输出“No input available!/n”因为系统会自动把你按的回车转成识别成字符串的内容。
所以这个例子应该改成
#!/usr/bin/perl
chomp($a = );
if(defined($a)){
print "The input was $a";
}else{
print "No input available!\n";
}
用chomp命令把最后一个\n砍掉,这样,你如果什么都不输入,直接回车,你键入的才是一个undef,这样defined函数才有效果,如果这个程序如上,有defined,那么他的输出会是
The input was (后面会直接接你当前的目录,因为没有回车不会让你的目录换行)
如果你把程序的defined函数删除
#!/usr/bin/perl
chomp($a = );
if($madonna){
print "The input was $a";
}else{
print "No input available!\n";
}
如上,这样你运行以后,直接按回车,你的输出会是
No input available!
因为你最后打的回车被chomp砍掉了,所以$a变量就没有被赋值,也就成了undef,而你又删除了defined函数,也就是这个$a依然是undef,所以,这时候判断条件才是false,才会输出else的内容~本人亲测,名誉做保~哇卡卡~想起了作者的一句话,这本书的质量在于译者~希望对大家有帮助~
  • 2楼网友:鱼忧
  • 2021-04-07 12:22
defined 是用来检查一个变量是否存在的。
比如用于hash结构的查询,不存在则构建
if (!defined($hash{$key})) {
$hash{$key} = $value;
# do something else here ...
}
  • 3楼网友:不如潦草
  • 2021-04-07 11:59
“注意:此函数作用不是判断某个变量是否已经定义,而是用来判断某个变量是否为空。”
Look at this script and you will understand:
use Moose::Autobox;
my $x;
$x->defined; # false

$x = 10;
$x->defined; # true
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯