Chinaunix

标题: 怎么给函数传一个$的参数啊?为什么参数为空,@_确为真呢? [打印本页]

作者: frilland    时间: 2009-07-23 11:14
标题: 怎么给函数传一个$的参数啊?为什么参数为空,@_确为真呢?
my $xx;
sub a
{
if(@_)
{
print "true";
}
else
{
print "false";
}
}
&a($xx);

我想传一个变量$xx来判断其存在不存在,当我没有给$xx赋值的时候,@_却为真了,上面的代码打印“true”,这是为什么呢?
作者: yashiro_lj    时间: 2009-07-23 11:28
if(@_)只是判断array是否为空,因为传入的$xx会作为@_的第一个元素,所以@_不为空列表,故打印出true
作者: Perl_Er    时间: 2009-07-23 12:02
标题: 回复 #1 frilland 的帖子
if(@_) 是判断@_ 而不是 $xx
作者: cheese_lee    时间: 2009-07-23 12:06
if (defined $_[0])
作者: frilland    时间: 2009-07-23 13:56
标题: 回复 #2 yashiro_lj 的帖子
呵呵,是这样的噢,知道咯~谢谢哈~
作者: frilland    时间: 2009-07-23 13:58
标题: 回复 #3 Perl_Er 的帖子
恩,呵呵,知道咯,谢谢!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2