我讀過perl在執行子節點時使用了引用調用。我做了一個簡單的代碼來檢查此屬性,但它的行爲一樣,如果perl的是個call-by-值:如果perl是通過引用進行調用,爲什麼會發生這種情況?
$x=50;
$y=70;
sub interchange {
($x1, $y1) = @_;
$z1 = $x1;
$x1 = $y1;
$y1 = $z1;
print "x1:$x1 y1:$y1\n";
}
&interchange ($x, $y);
print "x:$x y:$y\n";
這將產生以下的輸出:
$ perl example.pl
x1:70 y1:50
x:50 y:70
如果論據進行治療一個以引用爲基礎的方式,不應該等於x1而y等於y1?
請使用[strict](http://perldoc.perl.org/strict.html),使用[warnings](http://perldoc.perl.org/warnings。html),請熟悉[詞法作用域變量](http://perldoc.perl.org/perlsub.html#Private-Variables-via-my()),並且不要調用具有前導'&'的子例程[你知道你爲什麼要這樣做,並需要這樣做](http://perldoc.perl.org/perlsub.html#Prototypes)。越快樂,你會越快樂。 :) – pilcrow
此外,還有[更簡單的方法來交換值](http://stackoverflow.com/a/18606254/132382)。 – pilcrow