Perl PP recherche le script de sortie à l'intérieur / script /
Question
J'ai un problème vraiment étrange mais seulement lorsque je fonctionne Ubuntu (sur Centos Evertyhing fonctionne). J'ai fait un script dans Perl et utilisé le Mail :: imapClient module.
Quand j'exécute la commande suivante:
pp -o myapp perlscript.pl
Tout fonctionne, mais lorsque j'essaie d'exécuter le script binaire (MyApp), cela me donne l'erreur suivante:
Cannot connect through IMAPClient: No such file or directory at script/perlscript.pl line 22.
Mais quand j'utilise le perlscript.pl, tout va bien ......
Avez-vous une idée pourquoi?
scénario:
#!/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: $!";
La solution
Vous faites la vérification des erreurs. Vous devez inspecter $@
, ne pas $!
, pour le constructeur. L'exécution du programme modifié (non encore compilé avec PP) donne le message d'erreur utile:
Impossible de se connecter via IMAPClient: Impossible de se connecter à imap.gmail.com: Impossible de charger 'IO :: Socket :: SSL': Impossible de localiser IO / Socket / SSL.pm dans @inc (@inc contient:…) (EVAL 7) Ligne 2.
Il semble que vous ayez oublié de dire au compilateur de Ajouter la dépendance cachée qu'il ne pouvait pas détecter seul.