패키지/모듈 문제, 기본적인 사용법은 다음과 같습니다펄 - 나는 펄 모듈을 사용하여 읽은 모든 것을에서
<name>
이의 파일 이름입니다 문package <name>
을 포함.pm
확장명 모듈 파일 확장 모듈이없는 모듈.- 모듈을 사용하는 코드 파일에는
use <name>;
문이 포함되어 있습니다.
코딩중인 응용 프로그램에는 약 5 개의 모듈을 사용하는 하나의 주 코드 스크립트가 있습니다. 모듈에 package <name>
문을 포함하는 것을 잊었지만 내 코드는 여전히 use <name>
문으로 올바르게 실행되었습니다. 모듈 중 하나에서 Undefined subroutine
오류를 받기 시작 했으므로 패키지 문을 각 모듈에 추가했습니다. 이제 나머지 모듈은 이 중지되었습니다. 뭐라 구요?
예 :
mainapp.pl
#!/usr/bin/perl
use UtyDate;
my $rowDate = CurrentDate("YYYYMMDD");
UtyDate.pm 나는 위의 코드를 실행하면, 나는 오류 Undefined subroutine &main::CurrentDate called at...
를 얻을 수
#!/usr/bin/perl
package UtyDate;
sub CurrentDate
{
#logic
}
return 1;
. 그러나 UtyDate.pm에서 package UtyDate;
행을 제거하면 오류가 발생하지 않습니다. 이 상황은 여러 모듈에 존재하지만 모든 모듈에는 존재하지 않습니다.
분명히 더 많은 코드가 표시되지 않지만 내가 보여주지 않은 코드가 여기에 표시된 패키지/사용 구조에 어떻게 영향을 미칠 수 있는지 혼란스러워합니다.
OP는' perlmod' (http://search.cpan.org/perldoc/perlmod)는'Exporter'에서 계속되고있는 것을 이해하기위한 전제 조건으로 먼저 나온 것입니다. – mob
큰 설명, 감사합니다. 제가 본 몇몇 예에서 Exporter가 사용 된 것을 보았습니다. 하지만 전부가 아니기 때문에 무관계하다고 생각했습니다. 나는이 문서를 너무 잘 살펴볼 것입니다. – brydgesk