我试图从子例程中调用一个多变量,但是当我尝试打印时,它仅打印一个变量。
在python中,脚本将为f = mode()[0]和b = mode()[1],并且可以正常工作。
子例程文件a.pl
sub mode() {
my ($f, $b);
$f=41;
$b=2;
return ($f,$b);
}
另一个调用a.pl的文件
use strict;
use warnings;
require 'a.pl';
my ($f,$b);
$f= mode(0);
$b= mode(1);
print "$f\n";
print "$b\n";
问题在于它只为f和b都打印2。
答案 0 :(得分:2)
您已将参数传递给子例程:$f = mode(0); $b = mode(1);
。
尝试以下操作:
my ($f,$b) = mode();
您的子例程返回固定长度的列表。您可以将列表中的值分配给变量。
答案 1 :(得分:1)
问题在于子例程的定义(无参数)与您试图调用它的方式(一个参数)之间不匹配。
将这些调用更改为此即可,
$f= (mode())[0];
$b= (mode())[1];
答案 2 :(得分:0)
认为从返回集获取数组索引与发送参数之间在语法上存在差异。 function(xxx)发送参数,(function()[])使用返回的数组切片。