지도를 이해할 수 있다고 생각했지만 다음은 내가 이해하지 못하는 결과가 있습니다. 왜 그런 일이 벌어지는 지 알 수 없습니다.
$_
이 _do_stuff_to_file
호출 중에 재설정되므로 문제가있는 것입니다. 그래서 인쇄 될 내용은 일 때 here: \nhere:\n
입니다.
참고 : 이것은 테스트 코드가 아닙니다. 그것은 내가 실험실에서 본 기억이 있습니다. @array
의 내용이 왜 변경됩니까?
_some_func
에서 1을 반환하기 전에 $_
을 $f
으로 설정 한 경우 그런 다음 배열은 여전히 손상되지 않습니다. 펄
my @array = ("donkie", "kong");
map { push @junk, _some_func('blah', $_); } @array;
if (join ('', @junk) !~ /0/)
{ # for example sake this is always true since return 1 from _some_func.
print map { "here: $_\n"; } @array;
}
sub _some_func
{ # for example sake, lets say $f always exists as a file.
my $j = shift;
my $f = shift;
return 0 if !open(FILE, "< $f");
close FILE;
_do_stuff_to_file($f);
return 1;
}
sub _do_stuff_to_file
{
my $f = shift;
open(IN, "< $f");
open(OUT, "> $f.new");
while (<IN>)
{
print OUT;
}
close IN;
close OUT;
}
질문에 이미 답변이 포함되어 있습니다. 질문을 "$ _"하는 것을 피하는 방법은 무엇입니까? 우리가 대답 할 수있는 것이기 때문에 (그리고 Michael Carman은 이미 가지고 있습니다.) – hobbs
나는 hobbs에게 질문 제목을 추천했습니다. @ 어제 당신은 그것을 변경합니까? – dolmen