5.5.4. 사용자 지정 모듈
귀하의 사이트에 특정 자신의 펄 모듈을 만드는 것이 좋습니다. 서로 다른 사이트를 호스팅하거나 사이트 내에서 모양과 느낌이 다른 응용 프로그램이 다른 경우 각각에 대한 모듈을 만들고 싶을 수 있습니다. 그러나 생물 과학과 같은 다른 분야에 대한 어플리케이션도 있습니다..이러한 서브 루틴은 사이트에 따라 다르지만 오류를 처리해야합니다.
전에 펄 모듈을 직접 만들지 않았다면 걱정하지 마십시오. 예제 5-3 은 에이버리 최소 모듈을 보여줍니다.
실시예 5-3. CGIBook::Error.pm
#!/usr/bin/perl -wTpackage CGIBook::Error;# Export the error subroutineuse Exporter;@ISA = "Exporter";@EXPORT = qw( error );$VERSION = "0.01";use strict;use CGI;use CGI::Carp qw( fatalsToBrowser );BEGIN { sub carp_error { my $error_message = shift; my $q = new CGI; my $discard_this = $q->header( "text/html" ); error( $q, $error_message ); } CGI::Carp::set_message( \&carp_error );}sub error { my( $q, $error_message ) = @_; print $q->header( "text/html" ), $q->start_html( "Error" ), $q->h1( "Error" ), $q->p( "Sorry, the following error has occurred: " ), $q->p( $q->i( $error_message ) ), $q->end_html; exit;}1;
펄 모듈과 표준 펄 스크립트의 유일한 차이점은 다음과 같이 파일을 저장해야 한다는 것입니다 a.pm 확장명,선언 모듈의 패키지 이름패키지 기능(이 제외 하 고 파일의 이름과 일치 해야 합니다 the.pm 확장 및 대체::에 대한/),그리고 평가할 때 진정한 값을 반환하는지 확인하십시오(1 의 이유;맨 아래에 있음).
패키지 이름을 결정할 때 파일 이름은@주식 회사의 라이브러리 경로에 해당해야합니다. 이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해,이 문제를 해결하기 위해, 따라서 라이브러리 디렉터리에 상대적인 모듈의 경로는 다음과 같습니다.
모듈의 버전을$버전으로 저장하는 것이 표준 방법입니다. 편의를 위해 내보내기 모듈을 사용하여 오류 서브 루틴을 내보냅니다. 이 문제를 해결하려면 다음 단계를 따르세요. 엑스포터 사용에 대한 자세한 내용은 엑스포터 맨페이지 또는 펄과 같은 기본 펄 텍스트를 참조하십시오.
이 파일을 저장하는 몇 가지 옵션이 있습니다. 예를 들어,펄 디렉토리에는 사이트별 모듈이 포함되어 있습니다(즉,펄 표준 배포에 포함되지 않음). 펄 라이브러리의 경로는 다를 수 있습니다; 다음 명령을 사용하여 시스템에 배치할 수 있습니다:
$ perl -e 'print map "$_\n", @INC'
이 라이브러리는 그러한 문제를 표준화된 프로그래밍 인터페이스를 제공함으로써 해결합니다.
모듈을 다음과 같이 사용할 수 있습니다:
#!/usr/bin/perl -wTuse strict;use CGI;use CGIBook::Error;my $q = new CGI;unless ( check_something_important( ) ) { error( $q, "Something bad happened." );}
만약 당신이 당신의 라이브러리 디렉토리에 모듈을 설치할 수 있는 권한이 없고,만약 당신이 당신의 시스템 관리자가 그것을 할 수 없다면,당신은 다른 위치에 모듈을 배치할 수 있습니다.그런 다음 모듈을 검색하는 목록에 이 디렉터리를 포함해야 합니다. 이 작업을 수행하는 가장 간단한 방법은 다음과 같습니다.:
#!/usr/bin/perl -wTuse strict;use lib "/usr/local/apache/perl-lib";use CGI;use CGIBook::Error;...