![](/img/trans.png)
[英]In perl, access one of the multiple lines which stored in single array element
[英]Adding element to multiple array with single command in Perl
我可以使用push in perl將元素添加到多個數組中嗎?
例如
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
推陣列,列表
通過將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
您會收到一條警告,說:
在無效上下文中無用的常量(“多余”)
您可以通過兩次調用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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.