다음 코드를 살펴 보시기 바랍니다 : 그게 뜻 이죠,펄은`정의 '와`미확정'서브 루틴 범위는
use strict;
use warnings;
print "subroutine is defined\n" if defined &myf;
myf();
sub myf
{
print "called myf\n";
}
undef &myf;
#myf();
print "now subroutine is defined\n" if defined &myf;
출력은 첫 번째 print
문을 인쇄 할 수 있습니다
subroutine is defined
called myf
입니다 인터프리터 (또는 컴파일러?)가 더 멀리 보이고 서브 루틴 정의를 보았습니까? 그렇다면 undef &myf;
이 두 번째 print
문으로 표시되지 않는 이유는 무엇입니까? 범위로 할 필요가 있지만, 함께 시간 및 런타임을 컴파일되지 않습니다
감사
'undef'는 런타임에 실행하는 코드이기 때문에'sub'는 정의이고 컴파일 타임에 발생합니다. – Sobrique