Perl PP sta cercando lo script di output all'interno /script /
Domanda
Ho un problema davvero strano, ma solo quando gestisce Ubuntu (su Centos Evertyhing funziona). Ho realizzato uno script in Perl e ho usato il Mail :: imapclient modulo.
Quando eseguo il seguente comando:
pp -o myapp perlscript.pl
Tutto funziona, ma quando sto cercando di eseguire lo script binario (MyApp), mi dà il seguente errore:
Cannot connect through IMAPClient: No such file or directory at script/perlscript.pl line 22.
Ma quando eseguo il perlscript.pl è tutto ok ...
Hai idea del perché?
Script:
#!/usr/bin/perl
use strict;
use Mail::IMAPClient;
use Data::Dumper;
use MIME::QuotedPrint ();
$|=1;
# Vars
my $odate = `date +'%d/%m/%Y'`; chomp($odate);
$odate = '15/01/2012';
my $timeout = 120;
# Connect to IMAP server
my $imap = Mail::IMAPClient->new(
Server => 'imap.gmail.com',
User => 'my@email.com',
Password => 'my_password',
Port => 993,
Ssl => 1,
)
or die "Cannot connect through IMAPClient: $!";
Soluzione
Stai facendo l'errore controllando il modo sbagliato. Devi ispezionare $@
, non $!
, per il costruttore. L'esecuzione del programma modificato (non ancora compilato con PP) fornisce il messaggio di errore utile:
Impossibile connettersi tramite imapclient: impossibile connettersi a imap.gmail.com: impossibile caricare 'io :: socket :: ssl': non riesco a individuare io/socket/ssl.pm in @inc (@inc contiene:…) at (Eval 7) Linea 2.
Sembra che tu abbia dimenticato di dirlo al compilatore Aggiungi la dipendenza nascosta che non ha potuto rilevare da solo.