Käsittelyvirheet (CGI-ohjelmointi Perlillä)

5.5.4. Mukautettu moduuli

on hyvä idea luoda oma Perl-moduuli, joka on erityinen sivustollemme. Jos isännöit eri sivustoja, tai on erilaisia sovelluksia sisällä sivuston eri näyttää ja tuntuu, voit haluta luoda moduulin jokaiselle. Tässä moduulissa voit sijoittaa ohjelmakoodeja, joita huomaat käyttäväsi monissa CGI-skripteissä.Nämä aliohjelmat vaihtelevat sivustosi mukaan, mutta virheitä pitäisi käsitellä.

jos et ole aiemmin luonut omaa Perl-moduulia, älä huoli, se on melko yksinkertaista. Esimerkki 5-3 näyttää Averyn minimaalisen moduulin.

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

ainoa ero Perl-moduulin ja tavallisen Perl-komentosarjan välillä on, että sinun pitäisi tallentaa tiedostosi a.pm laajennus, ilmoita moduulin Paketin nimi packagefunktion kanssa (tämän pitäisi vastata tiedoston nimeä paitsi ilman the.pm extension and substituting:: for /), and make surethat it returns a true value when evaluated (the reason for the1; at the bottom).

kun Paketin nimi määritetään, tiedoston nimen tulee olla @INC: n kirjastopolun mukainen. Tallennamme tiedoston osoitteeseen / usr/lib/perl5/site_perl/5.005/Cgibook/Error.pm./usr/lib/perl5/site_perl / 5.005 on kirjastodirectory. Näin, polku moduulin suhteessa kirjastohakemisto on CGIBook / Error. pm joten paketti oncgibook:: Error.

on normaali käytäntö tallentaa moduulin versio$ – versioon. Yksinkertaisuuden vuoksi käytämme myös Viejämoduulia viemään virhealiohjelmaa. Tämä antaa meille mahdollisuuden viitata siihen skripteissä cgibook::viejä::virhe. Viejän Man-sivulla tai Perl: n ensisijaisessa tekstissä, kuten ohjelmointiperl: ssä, on lisätietoja exexporterin käytöstä.

sinulla on pari vaihtoehtoa tämän tiedoston tallentamiseen. Yksinkertaisin ratkaisu on tallentaa se Perl-kirjastojesi sine_perl-osastoon,kuten / usr/lib/perl5/site_perl/5.005/Cgibook / Error.pm.site_perl-hakemistoon sisältyy moduuleja, jotka ovat paikkakohtaisia (eivät sisälly Perl: n standardijakeluun). Perl-kirjastojen polut voivat poiketa toisistaan; voit sijoittaa ne järjestelmääsi seuraavalla komennolla:

$ perl -e 'print map "$_\n", @INC'

haluat luultavasti luoda alihakemiston, joka on ainutlaatuinen organisaatiollesi, kuten teimme cgibookin kanssa, säilyttääksesi kaikki luomasi Perl-moduulit.

moduulia voi käyttää seuraavasti:

#!/usr/bin/perl -wTuse strict;use CGI;use CGIBook::Error;my $q = new CGI;unless ( check_something_important( ) ) { error( $q, "Something bad happened." );}

jos sinulla ei ole lupaa asentaa moduulia Perllibrary-hakemistoon, ja jos et saa järjestelmänvalvojaasi tekemään sitä, voit sijoittaa moduulin toiseen paikkaan, esim.osoitteeseen/usr/local/apache/perl-lib/Cgibook/Error.pm.Sitten sinun täytyy muistaa sisällyttää tämä hakemisto luetteloon, joka perl etsii moduuleja. Yksinkertaisin tapa tehdä tämä onwith thelib pragma:

#!/usr/bin/perl -wTuse strict;use lib "/usr/local/apache/perl-lib";use CGI;use CGIBook::Error;...

Vastaa

Sähköpostiosoitettasi ei julkaista.