使用Perl中的单个命令将元素添加到多个数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Perl中的单个命令将元素添加到多个数组相关的知识,希望对你有一定的参考价值。

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

EG

my @arr1 = qw/one two three/;
my @arr2 = qw/four five six/;
push (@arr1,@arr2), "extra";

预期产量::

@arr1 = one two three extra
@arr2 = four five six extra
答案

documentation for push()很清楚。

推送ARRAY,LIST

通过将LIST的值附加到ARRAY的末尾来将ARRAY视为堆栈。 ARRAY的长度增加了LIST的长度。具有相同的效果

for my $value (LIST) 
    $ARRAY[++$#ARRAY] = $value;

但效率更高。返回完成推送后数组中元素的数量。

从Perl 5.14开始,一个实验性功能允许push采用标量表达式。该实验被认为是不成功的,并且从Perl 5.24开始被删除。

所以不行。 push()一次只能使用一个阵列。

你的解决方案

push (@arr1,@arr2), "extra";

@arr2的所有元素添加到@arr1结尾的效果。 “额外”将被忽略,因为右括号将被视为结束push()的参数列表。在use warnings下你会得到一个警告说:

在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");

以上是关于使用Perl中的单个命令将元素添加到多个数组的主要内容,如果未能解决你的问题,请参考以下文章

Perl 中的正则表达式组:如何从正则表达式组中捕获与字符串中出现的未知数量/多个/变量匹配的元素到数组中?

WPF将单个文本框绑定到集合对象或数组中的元素

javascript push啥时候用

如何将来自三个 Perl 数组的数据插入到单个 MySQL 表中?

将元素添加到结构中的 char 数组

JavaScript中push ,pop ,concat ,join方法