0
고려 다음 코드 :액세스 중첩 된 해시 및 서브 루틴
#GLOBAL SPACE HERE
{
#NESTED HERE
my %hash = (
key1 => 'A',
key2 => 'B',
key3 => 'C',
key4 => 'D',
);
sub test
{
#subroutine code goes here
}
}
어떻게 해시 또는이 중괄호 내에 중첩 된 전역에서 서브 루틴 중 하나가 액세스 할 것인가?
변수는 컴파일시에도 선언됩니다. 차이점은 서브 루틴은 어휘 적으로 범위가 지정되지 않는다는 것입니다. – ysth
@ysth 런타임 실행이 선언 된 코드의 지점에 도달 할 때까지 변수에 액세스 할 수 없습니다. 서브 루틴은 범위에 관계없이 런타임에 코드의 모든 지점에서 사용할 수 있습니다. – TLP
첫 번째 지점 인 no :'my $ x; BEGIN {엄격한 사용; $ x = 42} print $ x'. 당신의 두 번째 요점을 다시 말하자면, 그것은 "컴파일 타임에 선언 된대로"대신에 말해야한다고 말하는 것입니다. 후자는 문제가 아닙니다. – ysth