【发布时间】:2011-09-25 02:50:29
【问题描述】:
我知道这可能是一个简单的解决方法,但我无法通过谷歌和搜索这里的问题找到答案。
我的目标是将多个数组传递给一个子例程,该子例程简单地分别遍历每个数组并在每个数组之前和之后打印每个数组。
我有什么:
@A1 = (1, 2, 3);
@A2 = (4, 5, 6);
printdata(@A1, @A2) ;
sub printdata {
foreach(@_) {
print "$_" ;
print "@@@"
}
}
我想要得到的是:
123@@@456@@@
而是将两个数组视为一个数组并遍历数组中的每个变量,将分隔符放在每个变量之后,而不是整个数组。
1@@@2@@@3@@@等.....
我不确定如何让子例程将数组视为单独的而不是一个。
任何帮助将不胜感激!
【问题讨论】:
-
您发现的是 Perl 中的 List 上下文。列表是传递给方法的(几乎任何时候你都使用带逗号的括号)。它们会自动压平其中的任何内容——数组或散列。这在将参数传递给函数时非常方便(例如,您可以在数组中构建所有参数,然后将其作为列表传递给函数)或整理来自多个来源的数据(例如组合多个散列或数组),但是这种“上下文”的想法对大多数程序员来说是新的,所以会让人绊倒。 :)
标签: arrays perl subroutine