2017-02-17 58 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