perl中的defined用来判断某个变量是否为空??求解defined有什么用?
用法:函数defined返回0、false或者非0、true。此运算结果依赖于传递给它进行计算的参数的内容。如果参数中不含有字符和数字值,则返回0;如果参数中包含一个字符...
用法:函数defined返回0、false或者非0、true。
此运算结果依赖于传递给它进行计算的参数的内容。
如果参数中不含有字符和数字值,则返回0;如果参数中包含一个字符或者数字值,则返回非0或者true值。
这对于判断一个已经建立的数组中的每个元素是否已经定义非常有用。
到这里我还认为是对的,可是接着有句就不理解了:
“注意:此函数作用不是判断某个变量是否已经定义,而是用来判断某个变量是否为空。”
测试:
$a = <STDIN>;
If ($defined ($a))
{
print “The input was $a”;
}else
{
print “No input available!/n”;
}
不做任务输入操作,结果是:The input was
因为\n这个回来也是输入字符,
这里的defined断空的作用表现的不明显,有没有高手写个define的用法的例子,好理解的,谢谢! 展开
此运算结果依赖于传递给它进行计算的参数的内容。
如果参数中不含有字符和数字值,则返回0;如果参数中包含一个字符或者数字值,则返回非0或者true值。
这对于判断一个已经建立的数组中的每个元素是否已经定义非常有用。
到这里我还认为是对的,可是接着有句就不理解了:
“注意:此函数作用不是判断某个变量是否已经定义,而是用来判断某个变量是否为空。”
测试:
$a = <STDIN>;
If ($defined ($a))
{
print “The input was $a”;
}else
{
print “No input available!/n”;
}
不做任务输入操作,结果是:The input was
因为\n这个回来也是输入字符,
这里的defined断空的作用表现的不明显,有没有高手写个define的用法的例子,好理解的,谢谢! 展开
展开全部
我觉得这些回答都不准确
这个《perl入门》里面的例子是有问题的,首先你看这一版本来就有一个错误。
defined是perl的函数,所以显然不应该有“$”不然就成了变量了~
然后我们再说这个例子,这个例子根本不可会输出“No input available!/n”因为系统会自动把你按的回车转成识别成字符串的内容。
所以这个例子应该改成
#!/usr/bin/perl
chomp($a = <STDIN>);
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 = <STDIN>);
if($madonna){
print "The input was $a";
}else{
print "No input available!\n";
}
如上,这样你运行以后,直接按回车,你的输出会是
No input available!
因为你最后打的回车被chomp砍掉了,所以$a变量就没有被赋值,也就成了undef,而你又删除了defined函数,也就是这个$a依然是undef,所以,这时候判断条件才是false,才会输出else的内容~本人亲测,名誉做保~哇卡卡~想起了作者的一句话,这本书的质量在于译者~希望对大家有帮助~
这个《perl入门》里面的例子是有问题的,首先你看这一版本来就有一个错误。
defined是perl的函数,所以显然不应该有“$”不然就成了变量了~
然后我们再说这个例子,这个例子根本不可会输出“No input available!/n”因为系统会自动把你按的回车转成识别成字符串的内容。
所以这个例子应该改成
#!/usr/bin/perl
chomp($a = <STDIN>);
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 = <STDIN>);
if($madonna){
print "The input was $a";
}else{
print "No input available!\n";
}
如上,这样你运行以后,直接按回车,你的输出会是
No input available!
因为你最后打的回车被chomp砍掉了,所以$a变量就没有被赋值,也就成了undef,而你又删除了defined函数,也就是这个$a依然是undef,所以,这时候判断条件才是false,才会输出else的内容~本人亲测,名誉做保~哇卡卡~想起了作者的一句话,这本书的质量在于译者~希望对大家有帮助~
展开全部
$a=<STDIN>;
chomp $a;
if(defined($a)and $a ne""){
print "The input was $a";
}
else{
print "No input avaiable!";
}
#这样就行了 ,我觉得defined这个关键字用在判断从输入获取值这个例子是不合适的,不管有没有输入,它总要被"\n"初始化.因此用$a ne""判断即可
$a=<STDIN>;
chomp $a;
if($a ne""){
print "The input was $a";
}
else{
print "No input avaiable!";
}
chomp $a;
if(defined($a)and $a ne""){
print "The input was $a";
}
else{
print "No input avaiable!";
}
#这样就行了 ,我觉得defined这个关键字用在判断从输入获取值这个例子是不合适的,不管有没有输入,它总要被"\n"初始化.因此用$a ne""判断即可
$a=<STDIN>;
chomp $a;
if($a ne""){
print "The input was $a";
}
else{
print "No input avaiable!";
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
“注意:此函数作用不是判断某个变量是否已经定义,而是用来判断某个变量是否为空。”
Look at this script and you will understand:
use Moose::Autobox;
my $x;
$x->defined; # false
$x = 10;
$x->defined; # true
Look at this script and you will understand:
use Moose::Autobox;
my $x;
$x->defined; # false
$x = 10;
$x->defined; # true
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
defined 是用来检查一个变量是否存在的。
比如用于hash结构的查询,不存在则构建
if (!defined($hash{$key})) {
$hash{$key} = $value;
# do something else here ...
}
比如用于hash结构的查询,不存在则构建
if (!defined($hash{$key})) {
$hash{$key} = $value;
# do something else here ...
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询