5.5.4. Vlastní modul
je dobré vytvořit si vlastní modul Perl, který je specifický pro vaše stránky. Pokud hostujete různé weby nebo máte na svém webu různé aplikace s různým vzhledem a pocitem, možná si přejete vytvořit modul pro každý. V rámci tohoto modulu můžete umístitprogramy, které používáte v mnoha skriptech CGI.Tyto podprogramy se budou lišit v závislosti na vašem webu, ale jeden by mělodstraňte chyby.
pokud jste předtím nevytvořili vlastní modul Perl, nemějte strach, je to docela jednoduché. Příklad 5-3 ukazuje avery minimální modul.
příklad 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;
jediný rozdíl mezi modulem Perl a standardním skriptem Perl ježe byste měli Soubor Uložit a.pm rozšíření, deklarovatnázev balíčku modulu s thepackagefunction (to by mělo odpovídat názvu souboru s výjimkou bez the.pm rozšíření a nahrazení:: pro/) a ujistěte se, že při hodnocení vrátí skutečnou hodnotu (důvod Pro1; dole).
Whendetermining the package name, the file ‚ s name should beelative to a library path in @INC. V našem příkladu uložíme soubor na adrese / usr / lib / perl5/site_perl / 5.005/CGIBook/Error. pm. / usr/lib / perl5 / site_perl/5.005 je knihovní adresář. Cesta k modulu Vzhledem k librarydirectory je tedy CGIBook / Error. pm, takže balíček jecgibook:: Error.
je běžnou praxí ukládat verzi modulu ve verzi$. Pro pohodlí také použijeme exportní modul pro export chybového podprogramu. To nám umožňuje odkazovat toit v našich skriptech jako errormísto CGIBook:: Exportér:: chyba. Podrobnosti o použití vývozce naleznete na stránce vývozce nebo v primárním textu Perl, jako je programování Perl.
máte několik možností pro uložení tohoto souboru. Nejjednodušší řešení je uložit jej do adresáře_perl vašich knihoven Perl, jako je/usr / lib / perl5 / site_perl / 5.005 / CGIBook / Error. pm. adresář site_perl obsahuje moduly, které jsou specifické pro daný web (tj. nejsou zahrnuty do standardní distribuce Perl). Cesty vašich knihoven Perl se mohou lišit; můžete je umístit do systému pomocí následujícího příkazu:
$ perl -e 'print map "$_\n", @INC'
pravděpodobně budete chtít vytvořit podadresář, který je jedinečný pro vašeorganizace, jako jsme to udělali s CGIBook, držet všechny moduly Perl, které vytvoříte.
modul můžete použít následovně:
#!/usr/bin/perl -wTuse strict;use CGI;use CGIBook::Error;my $q = new CGI;unless ( check_something_important( ) ) { error( $q, "Something bad happened." );}
pokud nemáte oprávnění k instalaci modulu v adresáři Perllibrary, a pokud nemůžete dostat správce systému todo to, pak můžete umístit modul na jiném místě, forexample, / usr/local / apache / perl-lib / CGIBook / Error. pm.Pak musíte pamatovat na zahrnutí tohoto adresáře do seznamuperl hledá moduly. Nejjednodušší způsob, jak to udělat, jeselib pragma:
#!/usr/bin/perl -wTuse strict;use lib "/usr/local/apache/perl-lib";use CGI;use CGIBook::Error;...