2014-02-18 3 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