Newsgroup: it.comp.os.linux.iniziare
Titolo: Help scippettino in perl

Il problema:
verificare la presenza di DBI e DBD::mysql sul sistema
al momento ho uno script funzionante solo con sistemi .rpm
tipo:
print "Verifico la presenza del pacchetto perl-DBI\n";
local $test_DBI =`rpm -q perl-DBI`;
if ($test_DBI =~ /installed/) {
print "Errore $test_DBI \n"; 
}else{
print "OK $test_DBI \n";
}
mavorrei qualcosa di indipendente dalla piattaforma ma non saprei come
andare a ravanare in @INC in modo da avere la "certezza" che il pacchetto
sia realmente installato.
Non mi va di fare uno script funzionante con RH e soprire che in FreeBSD
sta in un path diverso o di incasinare il tutto con le future realease di
perl.
Qualche idea?

 Qualche idea?
Hai sbagliato ng!  :P
Ciao ;-)
-- 
Mirco Zorzo 305--->40k km--->TroppiEuro--->Polo tdi--->100k km, rca 10, 15pt 
-peso=-spazi d'arresto +prestazioni o minori consumi
MDK Linux 2.4.21 Registered user #287263

 Ciao ;-)
nota che ciò che sta tra `` equivale ad una chiamata system() il che
significa che si esce da perl e si entra in bash o altra shell a seconda
dell'SO sottostante, quindi il NG è quello giusto.

 dell'SO sottostante, quindi il NG è quello giusto.
Ok, mi spiace ma non so aiutarti, buon scippo!
Ciao, Mirco


 sia realmente installato.
beh, quando fai "use" se non e` installato si blocca :)
se invece e` installato funziona e basta... o vuoi qualcosa di piu`
raffinato?
magari require... (guarda la doc per la differenza esatta)
oppure una cosa fatta piu` con le mani... ti copio incollo dalla
documentazione uno script che hanno scritto per far capire come funziona
require...
              sub require {
                   my($filename) = @_;
                   return 1 if $INC{$filename};
                   my($realfilename,$result);
                   ITER: {
                        foreach $prefix (@INC) {
                           $realfilename = "$prefix/$filename";
                           if (-f $realfilename) {
                              $INC{$filename} = $realfilename;
                              $result = do $realfilename;
                              last ITER;
                          }
                      }
                   die "Can't find $filename in \@INC";
               }
               delete $INC{$filename} if $@ || !$result;
               die $@ if $@;
               die "$filename did not return true value" unless $result;
               return $result;
          }
cmq imho ti conviene chiedere sul it.comp.lang.perl 
-- 
#!/bin/rik0               | Seasons don't fear the reaper
for whom the bell trolls? | Nor do the wind, the sun or the rain
                          | (BOC)

 al momento ho uno script funzionante solo con sistemi .rpm
Assolutamente senza senso: e se avessi installato i moduli dai sorgenti?
Per queste cose si usa eval.
	use Carp;
	eval { use DBI; 1; }
	carp ("Non hai installato il modulo DBI") if ($@);
	eval { use DBI::mysql; 1; }
	carp ("Non hai installato il modulo DBI::mysql") if ($@);
Se il modulo non si trova in @INC, l'installazione del modulo è
sbagliata. Punto. Condonare l'utente in questi casi porta solo
confusione.
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)                 [ 
http://www.emmanuelebassi.net
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4