在Perl中使用单个命令向多个数组添加元素
我可以使用push-in-perl将元素添加到多个数组中吗 例如 预期输出::在Perl中使用单个命令向多个数组添加元素,perl,Perl,我可以使用push-in-perl将元素添加到多个数组中吗 例如 预期输出:: @arr1 = one two three extra @arr2 = four five six extra 问题很清楚 推送阵列,列表 通过附加 列表到数组的末尾。数组的长度随着长度的增加而增加 名单的一部分。具有与相同的效果 for my $value (LIST) { $ARRAY[++$#ARRAY] = $value; } 但它的效率更高。返回完成推送后数组中的元素数 从Perl5.14开始,
@arr1 = one two three extra
@arr2 = four five six extra
问题很清楚
推送阵列,列表
通过附加
列表到数组的末尾。数组的长度随着长度的增加而增加
名单的一部分。具有与相同的效果
for my $value (LIST) {
$ARRAY[++$#ARRAY] = $value;
}
但它的效率更高。返回完成推送后数组中的元素数
从Perl5.14开始,一个实验性的特性允许push-to-take
标量表达式。该实验被认为不成功,并且
从Perl 5.24开始删除
因此,不是。push()
一次只能处理单个数组
您的解决方案:
push (@arr1,@arr2), "extra";
将具有将所有@arr2
元素添加到@arr1
末尾的效果。“extra”将被忽略,因为右括号将被视为参数列表的结尾,指向push()
。在使用警告下,您会看到一条警告,上面写着:
在void上下文中无用地使用常量(“额外”)
您可以通过使用两个对push()
的调用并在子例程中隐藏复杂性来实现这一点。原始解决方案使用对阵列的引用:
sub twopush {
my ($a1, $a2, @elems) = @_;
push @$a1, @elems;
push @$a2, @elems;
}
twopush(\@arr1, \@arr2, "extra");
但这是Perl的子例程原型发挥作用的少数情况之一。您可以告诉子例程前两个参数是数组,编译器将处理引用
sub twopush(\@\@@) {
my ($a1, $a2, @elems) = @_;
push @$a1, @elems;
push @$a2, @elems;
}
twopush(@arr1, @arr2, "extra");
问题很清楚
推送阵列,列表
通过附加
列表到数组的末尾。数组的长度随着长度的增加而增加
名单的一部分。具有与相同的效果
for my $value (LIST) {
$ARRAY[++$#ARRAY] = $value;
}
但它的效率更高。返回完成推送后数组中的元素数
从Perl5.14开始,一个实验性的特性允许push-to-take
标量表达式。该实验被认为不成功,并且
从Perl 5.24开始删除
因此,不是。push()
一次只能处理单个数组
您的解决方案:
push (@arr1,@arr2), "extra";
将具有将所有@arr2
元素添加到@arr1
末尾的效果。“extra”将被忽略,因为右括号将被视为参数列表的结尾,指向push()
。在使用警告下,您会看到一条警告,上面写着:
在void上下文中无用地使用常量(“额外”)
您可以通过使用两个对push()
的调用并在子例程中隐藏复杂性来实现这一点。原始解决方案使用对阵列的引用:
sub twopush {
my ($a1, $a2, @elems) = @_;
push @$a1, @elems;
push @$a2, @elems;
}
twopush(\@arr1, \@arr2, "extra");
但这是Perl的子例程原型发挥作用的少数情况之一。您可以告诉子例程前两个参数是数组,编译器将处理引用
sub twopush(\@\@@) {
my ($a1, $a2, @elems) = @_;
push @$a1, @elems;
push @$a2, @elems;
}
twopush(@arr1, @arr2, "extra");
文档说明了什么?文档说明了什么?或者只使用一个循环:push@$\,对于\@arr1,\@arr2,使用“额外”按钮
@Mohit\u迈克:或者只使用一个循环:push@$\u,“额外”表示\@arr1、\@arr2代码>@Mohit\u Mike: