【发布时间】:2011-11-11 07:33:51
【问题描述】:
我想通过传递大约 4 个数组来调用子程序,然后获取每个数组的第一个值,然后在子程序中创建一个新数组(传递的数组的第一个元素的数组),然后返回那个大批。这是我尝试过的代码
my @a = (97,34,6,7);
my @b = ("A", "B", "F", "D");
my @c = (5..15);
my @d = (1..10);
my @tailings = popmany ( \@a, \@b, \@c, \@d );
print @tailings;
sub popmany {
my @retlist = ();
for my $aref (@_) { #1
my $arrele = @$aref; #2
push @retlist , $arrele #3
}
return @retlist;
}
在#1 中,我使用循环并获取第一个数组,然后在第 2 行中,我将整个数组分配给一个变量,认为默认情况下 perl 只会将数组的第一个变量存储到 @arrele。我将 $arrele 推送到一个新数组 @retlist ,对不起,我没有参考任何注释,所以我的程序可能是错误的。但这给我带来了类似的输出 441110
这毫无意义。
请解释一下代码我该怎么做。
【问题讨论】:
-
popmany作为名称具有双重误导性。pop删除数组的最后一个元素并返回它。这将返回 first 值而不更改数组。