Perl PP ищет выходной скрипт внутри / script / - PullRequest
3 голосов
/ 24 января 2012

У меня действительно странная проблема, но только при запуске Ubuntu (на CentOS работает evertyhing). Я создал скрипт на Perl и использовал модуль Mail :: IMAPClient .

Когда я запускаю следующую команду:

pp -o myapp perlscript.pl

Все работает, но когда я пытаюсь выполнить бинарный скрипт (myapp), он выдает мне следующую ошибку:

Cannot connect through IMAPClient: No such file or directory at script/perlscript.pl line 22.

Но когда я запускаю perlscript.pl, все в порядке ......
У вас есть идеи, почему?

сценарий:

#!/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: $!";

1 Ответ

4 голосов
/ 24 января 2012

Вы делаете проверку ошибок неправильно. Вы должны проверить $@, а не $!, для конструктора.Запуск измененной программы (еще не скомпилированной с помощью pp) выдает полезное сообщение об ошибке:

Невозможно подключиться через IMAPClient: Невозможно подключиться к imap.gmail.com: Невозможно загрузить IO :: Socket:: SSL ': не удается найти IO / Socket / SSL.pm в @INC (@INC содержит:…) в строке (eval 7) 2.

Похоже, вы забыли сообщитькомпилятор к добавляет скрытую зависимость , которую он не может обнаружить самостоятельно.

...