현재 디버깅하는 동안, 나는 내 코드에어디서나 내장형처럼 호출 할 수있는 서브 루틴을 정의 할 수 있습니까?
carp Dumper \@foo, \%bar;
문을 삽입하고 정기적으로 Carp
및 Data::Dumper
가 현재 패키지에 가져올 수 없습니다하는 문제로 실행하는 경향이있다. 나는 사방
main::bla \@foo, \%bar;
을 할 수 그래서 지금
sub main::bla {
use Carp; use Data::Dumper;
carp Dumper @_;
}
하지만 main::
은 날 귀찮게 :이 문제를 방지하려면 항상 포함되어있어 중앙 파일에 다음과 같은 하위를 정의했다. 어떤 패키지에도 자동으로 가져 오는 글로벌 패키지와 같은 것이 있습니까 (실제로는 모든 곳에서 가져온 내장 함수와 비슷합니다).
'use'는 컴파일 타임 지시어입니다. 다시 말해, 항상 포함되어있는 일부 모듈에서 '사용'을 사용하면이 모듈도 항상 포함됩니다. 그리고 호출되지 않을 수도있는 (예를 들어, 조건부의 거짓 분기에서) 일부 코드 내에 '사용'을 넣어도 처리되지 못합니다. – raina77ow
@ raina77ow : 멋진 생각. 호출 패키지에 'bla'를 설치하기 위해 일반적으로 포함 된 모듈의'import' 메소드를 납치하려했습니다. 그러나 공통 모듈은 기본적으로'import'를 가지고 있지 않으므로, 다른 모듈이'require' 또는'use'를하면, 다른 모듈은 공통 모듈의 메소드를 호출해야하기 때문에 다시 사용할 필요가 없습니다 어쨌든 (즉,'foo()'대신에'Common :: foo()') 명시 적으로. –
'PERL5OPT' 환경 변수는 항상 특정 모듈을로드하는데 사용될 수 있습니다 :'-MCarp' – toolic