En del skript kräver moduler och med denna så kan man kolla om den är installerad.
Om du själv gjort ett skript som kräver en speciell modul, så kan du modifiera skriptet till en subrutin och länka direkt till den aktuella modulen (om den inte är installerad).
Se exemplet nedan.
Här finns en demo och skriptet kan laddas ner här
Skriptet är inte tänkt att användas i befintligt skick, eftersom det inte direkt fyller någon funktion. (var knepigt att göra en fungerande demo) Vill man ta reda på vilka moduler man har, så är det bättre att lista dessa direkt.
( Källkod )
Om du gör ett skript som kräver en speciell modul, t.ex. LWP::Simple, och någon använder skriptet utan att modulen är installerad, så genereras troligen ett Internal Server Error med en massa huvudbry som följd. För att underlätta något så kan man ge ett bättre meddelande genom att exempelvis länka till aktuell modul om sådan saknas.
Kodexempel på subrutin i befintligt skript:
#!/usr/bin/perl
use CGI qw(:standard);
# Modulen som behövs för skriptet
$module = "LWP::Simple";
# Komplett sökväg till modulen som behövs
$FTPcpan = "ftp.cpan.org/pub/perl/CPAN/modules/by-module/LWP/libwww-perl-5.47.tar.gz";
my $action = (param('action')) ? param('action') : 'index';
if($action eq 'checkModule') {
&SearchModule
} else {
Ditt skript kan
skrivas här mellan
dessa paranteser
}
#################
# Subrutin
#################
sub SearchModule {
if ($ENV{'SERVER_SOFTWARE'}) {
print "Content-type: text/html\n\n";
$download = "<a href=\"$FTPcpan\">$FTPcpan</a>";
}
eval "use $module";
if ($@) {
print qq§
Det verkar inte som <b>$module</b> finns installerad.<br>
Ladda hem den från $download<br>
§;
} else {
print qq§
Modulen <b>$module</b> finns installerad så du kan använda skriptet.
§;
}
}
Koden modiferas efter eget behov och modulkontrollen görs med
dittskript.cgi?action=checkModule
vilket då bör framgå i en ReadMe eller i inledningen av skriptet.
[Redigerat av FlashX den 29 jan 2001]