我正在尝试打印函数调用返回的列表的索引。我将函数调用包装在括号中,试图将列表转换为数组。该程序无法编译在file.pl第4行附近的语法错误,附近")["'。如果我创建一个临时变量$ a或使用printf索引就可以了。为什么打印刹车,有更好的选择吗?
sub get{
return (1,2);
}
#print (get())[0]; #fails
printf("%d",(get())[0]);
my $a = (get())[0];
print $a;
答案 0 :(得分:4)
我认为你愚蠢地不使用
use warnings;
不这样做是件坏事。如果您使用过它,您会收到警告:
print (...) interpreted as function
也就是说,你写的是什么
print (get())[0]
当您尝试在print()
函数上放置下标时Perl会解释。这不起作用。
要使代码完成您的预期,您需要明确括号:
print ( (get())[0] );
你应该总是使用
use strict;
use warnings;
使用这些曲线有一点点学习曲线,但它们只会向您显示错误。不使用它们只会隐藏您的错误,并且您的代码无法正常工作。
答案 1 :(得分:0)
试试这个:
sub get{
return (1,2);
}
print((get)[0]);
或
my $a = (get)[0];
print $a;
1