2017-02-17 88 views

回答

2

一個不太神奇的方法是通過一個參考。

use strict; 
use warnings; 

sub modify_a 
{ 
     my ($a_ref) = @_; 
     $$a_ref = 10; 
} 

{ 
     my $a = 5; 
     modify_a(\$a); 
     print "$a\n"; 
} 
+1

您應該總是不鼓勵使用'$ a'或'$ b'作爲變量,因爲它們專門用於'sort'函數。 – stevieb

4
sub modify_a { 
    $_[0] *= 2; 
} 

@_元素是別名傳遞的值,因此,如果您直接修改,你會改變調用者的價值觀。有時候這可能很有用,但通常是不鼓勵的,因爲對呼叫者來說這通常是一個驚喜。

+0

如果我有一個很長的變量列表,我想通過名稱來引用它們,那該怎麼辦? – jeffythedragonslayer

+0

@jeffythedragonslayer - 檢查Data :: Alias模塊。儘管如此,參考文獻更好,因爲出乎意料的因素。 – Tanktalus

+0

我剛纔說我想到了它的引用,我也會看看Data :: Alias。 – jeffythedragonslayer