関数に渡されるすべての引数が存在する特別な配列@_
は、実際に渡された引数のエイリアスです。したがって、この特別な配列@_
に直接行った変更は、メインに反映されます。これは明らかです。上記プログラムについてPerl:特別な配列@_は本当にエイリアスではありませんか?
#!/usr/bin/perl
use warnings;
use strict;
$\="\n";
sub func {
print \@_;
$_++ for(@_);
}
my @arr=(2..4);
print \@arr;
func(@arr);
print "@arr";
、それは別名であるため@arr
と@_
の参照が同じ場所を指すことが期待。しかしそうではありません。上記の実行の
:
ARRAY(0x1b644d0)
ARRAY(0x1b644e0)
3 4 5
それらが@_
で行わ変化が@arr
で反射される様子を、2つの異なる位置を指していますか?
私は間違っていますか?ご意見をお聞かせください。
「@ _」は何のエイリアスでもありません。それはドキュメンテーションが言っていることではありません。 '@ _ 'の個々の*要素*はエイリアスです。 –