Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Perl中使用单个命令向多个数组添加元素_Perl - Fatal编程技术网

在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开始,

我可以使用push-in-perl将元素添加到多个数组中吗

例如

预期输出::

@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: