perl foreach数组数组

时间:2014-12-01 03:07:01

标签: arrays perl foreach push

我有7个数组(@ p1 @ p2 @ p3 @ p4 @ p5 @ p6 @ p7)我希望将值推送到每个数组,但我无法使其正常工作。以下是我尝试做的一个例子。

$something="some value";
@arrays=qw/@p1 @p2 @p3 @p4 @p5 @p6 @p7/;

foearch $line (@arrays) {
     push $line, $something;
     }

1 个答案:

答案 0 :(得分:3)

qw运算符获取分隔符之间的所有值,并返回这些值的字符串列表。所以在你的例子中:

@arrays=qw/@p1 @p2 @p3 @p4 @p5 @p6 @p7/;

实际上将@arrays设置为:

('@p1', '@p2', '@p3', '@p4', '@p5', '@p6', '@p7')

这只是一个字符串列表。

您要做的是将@arrays设置为引用列表到您的数组集。您可以通过在变量的符号前加\来获取参考。

所以,改变

@arrays = qw/@p1 @p2 @p3 @p4 @p5 @p6 @p7/;

@arrays = (\@p1, \@p2, \@p3, \@p4, \@p5, \@p6, \@p7);

通过取消引用循环中的每个单独的数组引用(push在perl中为您自动执行),您可以push在每个原始数组中需要{。}}。

有关数组引用如何工作的详细信息,请参阅perlreftut