Manipulace s chybami (programování CGI pomocí Perl)

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;...

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.