나는 perl이 서브 루틴을 실행할 때 call-by-reference를 사용한다는 것을 읽었다. 나는이 속성을 확인하는 간단한 코드를 만들었지 만, 펄이 경우처럼 통화 값에 의한 동작 :perl이 call-by-reference 인 경우 왜 이런 일이 발생합니까?
$ perl example.pl
x1:70 y1:50
x:50 y:70
인수가 처리 된 경우 :
$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";
이 다음과 같은 출력을 생성을 참조에 의한 호출, x가 x1과 같고 y가 y1과 같지 않아야합니까?
[경고] (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