特殊數組@_
(其中傳遞給函數的所有參數都存在)實際上是傳遞參數的別名。因此,我們直接對這個特殊數組進行的任何更改都會反映在主數據庫中。這很清楚。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
如果他們指向2個不同地點,如何在@_
所做的改變@arr
的反映?
我看到有什麼問題嗎?請指教。
'@ _'不是任何東西的別名。這不是文檔所說的。 '@ _'的個別*元素*是別名。 – 2013-03-07 11:02:08