Newsgroup: it.comp.lang.perl
Titolo: Errore nel log di Apache sul server...

Ciao
Sul computer locale, il mio cgi funziona benissimo, sul server no.
Questo l'errore nel file log:
Can't locate LWP/UserAgent.pm in @INC (@INC contains:
/usr/lib/perl5/5.00503/i386-linux /usr/lib/perl5/5.00503
/usr/lib/perl5/site_perl/5.005/i386-linux /usr/lib/perl5/site_perl/5.005 .)
at /home/..../cgi-lib/submit.cgi line 11.
il path di perl sul server č /usr/bin/perl (e anche sul mio pc)
il modulo richiamato sul mio pc si trova in /usr/lib/LPW/UserAgent.pm
sul server non so...
le prime righe dello script inizia cosi:
#!/usr/bin/perl
use LWP::UserAgent;
use LWP::Simple;
use HTTP::Request;
use HTTP::Response;
use HTTP::Status;
use CGI;
Cosa sbaglio?
Cosa sono quei path diversi (perl5...)?
Ciao
Silvio
------------------------------------------------------
Sito : 
http://www.freecity.it
Sito : 
http://www.freecity.it/sss
 (per i piů birichini)

 sul server non so...
Ti sei risposto da solo...
Prova a vedere sul server con 'perl -V' quale e' il contenuto di @INC (o usa
quello del messaggio di errore) e verifica se c'e' LWP. Penso di no.
Chiedi al tuo provider chiarimenti.
Non e' problema del path di Perl (lo script parte).
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

 use LWP::Simple;
A occhio e croce, mancherà anche questo!
DI solito, questi due vengono installati insieme con lib-www-perl (o
LWP!)
Ciao
M.
-- 
:wq

scusate, ma non posso caricarmeli da solo sul server, e se si come faccio a
richiamarli nello script?

 richiamarli nello script?
Se sei un macellaio con ambizioni da Jack lo squartatore si!
TI prensi il .pm e, senza installare niente (perchč di fatto non puoi!),
lo inserisci nella stessa directory dello script. Poi dallo script lo
richiami con un require.
Ma ad esempio, se piazzi in quella directory LWP/AserAgent.pm, sappi che
devi avere (o tu o il server):
HTTP::Request
HTTP::Response
HTTP::Date
LWP
LWP::Debug
LWP::Protocol
Carp
Certo, magari il server ne ha alcuni, ma se ne manca anche solo uno sei
da capo! E, ovviamente, Carp puň necessitare di altri moduli e via di un
loop (quasi) infinito!!
Ecco a cosa serve installare i moduli: a vedere che non ci siano
dipendenze insoddisfatte (in pieno stile Unix, oserei dire!)
A questo punto, vedi tu: secondo me, piuttosto che un'azione da
macelleria, č meglio mandare una mail al fornitore del servizio
chiedendo maggiori informazioni e, perchč no, se ti puň installare
quello che ti serve.
Ciao
M.
-- 
:wq

 richiami con un require.
Tecnicamente puoi installare qualsiasi package Perl in una directory a scelta,
indicando il path a Makefile.PL.
 perl Makefil.PL LIB=~/lib
 
ad esempio, fa si' che la tua directory LIB venga usata per installarci il
modulo. I dettagli in ExtUtils::MakeMaker.
Una volta fissato che le librerie Perl vanno in ~/lib, bastera' aggiungere
~/lib a @INC nei modi tradizionali, (ovvero 'use lib' oppure modifiche
esplicite di @INC oppure la variabile di environment PERL5LIB).
Questo viene comunque anche trattato in perlfaq8 "How do I keep my own
module/library directory?"


mmmm.....troppo difficile per me per il momento, sono un newbie e sono al
quarto capitolo del manuale Perl che ho appena comprato. :-)
preferisco chiedere all'amministratore del server...
grazie mille a tutti e due comunque.
Silvio

 indicando il path a Makefile.PL.
Ho "cuttato" un po'!
Quello che volevo dire, comunque, č che volendo si potrebbe anche
prendere direttamente il .pm, metterlo in una directory e richiamarlo
con un require. Solo che se il modulo ha una dipendenza non soddisfatta
rimani a piedi! E' appunto per quello che:
- tutti i "sources" dei moduli hanno un "make test" o qualche comando
  simile che, prima di installare, controllano che ci siano tutte le
  dipendenze a posto;
- utilizzare il metodo da "macellaio" č ... da macellaio!!!!
Non intendevo quindi crearsi una propria directory per i moduli (cosa
fattibilissima e pure legittima, come hai ben fatto chiaro), ma
utilizzare un modulo "alla ca%%o" semplicemente copiandolo da qualche
parte e richiamandolo.
Esempio (non per te, Maurizio, ma per chi fosse interessato
all'argomento!): la libreria perl GD dipende da librerie di sistema
(libGD o qualche nome del genere): se tu ti prendi i vari GD.pm e tutti
i "sottomodulini" di cui non ricordo il nome non basta copiarli ad
esempio nella directory dello script e richiamarli con un require; se non
hai le librerie di sistema, lo script non compila. Punto!
Ed č cosě per un altra miriade di moduli, che o hanno bisogno di altri
moduli o di specifiche librerie.
Ciao
M.
-- 
:wq