Perl 스크립트에서 단일 서브 루틴을 가져 오거나 내보내는 방법이 있습니까? 테스트 케이스를 양수 테스트와 음수 테스트로 나누어 달라는 요청을 받았으며 전체 서브 루틴을 복사하고 싶지 않습니다. 그러나 내가 require
또는 use
의 긍정 테스트 케이스를 음수로 사용하면 일반적으로 이름이 지정된 모든 하위에 대해 redefined
경고가 표시됩니다. perl 프로그램에서 단일 서브 루틴 가져 오기
require/use "positive_test.pl" qw (useful_sub);
#throws warning: Subroutine run_test redefined at ...
require/use "positive_test.pl::useful_sub";
#throws can't locate in @INC error
과 positive_test 스크립트의
: 여기에 내가 시도 몇 가지 대안use base 'Exporter';
our @EXPORT = qw(useful_sub);
나는 또한 시도 사용은 새로운 서브 루틴 네임 스페이스 내에서 필요합니다. 나는 무엇을 놓치고 있습니까, 아니면 경고없이 '재정의 (redefine)'래퍼 내에 모든 공통 모듈 이름을 래핑해야합니까? 귀하의 도움에 감사드립니다
일부 리팩터링을해야했습니다. 당신이 제공 한 솔루션은 제한된 경우에 잘 작동하지만 Perl의'require'는 해결하기가 너무 어려운 단일 인스턴스 만로드 할 수 있습니다 – paulski