2014-02-18 194 views
1

SOCKET recv函數如何直接修改標量$ PDU的值? 通常這個語法是一個按值傳遞而不是通過引用,我至少假設至少。Perl如何修改參數

my $PDU; 
my $addr = $socket->recv($PDU, MAXBYTES); 

我想用這個效果我自己的目的,所以最好 將是一個方便的測試例程它描繪出怎樣可以做到這一點。

像:

my $PDU="orig"; 
sub test { 
    my $par1=shift; 
    $par1="test"; 
} 
print "$PDU\n"; 

如你所知,這將導致進入 「原稿」 而不是 「測試」。

預先感謝您。

親切的問候, 赫爾曼

回答

1

你的函數應該有這樣的行爲時有據可查,

my $PDU="orig"; 
sub test { 
    $_[0] = "test"; 
} 

test($PDU); 
print "$PDU\n"; 

sub test { 
    my ($par1) = map \$_, @_; 

    $$par1 = "test"; 
} 

輸出

test