用法
wantarray
说明
根据函数被赋值的类型(是列表还是标量),返回不同的值
- 当不对定义的函数的返回值赋值时,wantarray返回undef;
- 当把定义的函数的返回值进行赋值,赋值给标量的时候,wantarray返回空字符串(空字串与undef不同);
- 当把定义的函数的返回值进行赋值,赋值给列表的时候,wantarray返回1;
例子
其实文字表述不方便,而且直接看该命令的名字wantarray,就是“想要?想要列表”?有点不好理解,那么直接上例子。
#!perl
# 定义函数
sub wantarray_example{
# defined wantarray 判断函数的返回值是否进行赋值了
if(defined wantarray){
print "assignment!\n";
}else{
print "no assignment!\n";
}
# wantarray 判断函数的返回值赋值给变量的类型,如果是列表,则返回1,否则返回undef
if(wantarray){
print "It is List!\n";
return qw/1 2 3 4/;
}else{
print "It is Scalar!\n";
return "A";
}
}
# 调用函数
# 不对函数的返回值进行赋值
print "======example1======\n";
wantarray_example();
# 对函数的返回值进行赋值,但是赋值给一个列表
print "======example2======\n";
my @list = wantarray_example();
# 对函数的返回值进行赋值,但是赋值给一个标量
print "======example3======\n";
my $scalar = wantarray_example();
# 将存贮在变量中的值打印出来
print "======print value======\n";
print "LIST : @list\n";
print "SCALAR: $scalar\n";
最后运行结果为
======example1======
no assignment!
It is Scalar!
======example2======