다음 코드에서 $i
의 재 선언에 대한 경고가 표시되지 않는 이유는 무엇입니까? 현재 범위 또는 문에서 my
, our
또는 state
변수를 재 선언하는 경우Perl foreach 제어 변수를 다시 선언 할 때 경고 메시지가 표시되지 않는 이유는 무엇입니까?
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
for my $i (1..3) {
my $i = 'DUMMY';
print Dumper $i;
}
두 번째 예는 첫째로 모두 같은에서 아니므로 분석되는대로
for
루프 생각할 수 다른 범위와 루프 반복자가 배열 요소에 앨리어싱됩니다 (즉, 루프 내에서 $ i를 변경하면 배열을 변경하거나 요소가 상수이면 경고를 생성 함). – Ether두 블록 모두 for 블록의 동일한 범위 내에 있지만 예제는 서로 다른 범위에 있습니다. –
두 번째 예제의 앨리어싱은 예상대로 작동하지만 직접 시도하십시오. my @a = (1 .. 3); {my $ i; $ i (1 .. 3) {$ i = 'x'; }} 인쇄 "a : @a"; 동일한 범위에서 : 질문과 마찬가지로, for 표현식의 선언은 내부 블록의 선언과 동일한 범위에 있지 않습니다. – willert