我有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;
}
答案 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。