3

我有一个非常奇怪的问题,但只有在运行 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: $!";
4

1 回答 1

4

您正在以错误的方式进行错误检查。对于构造函数,您必须检查$@,而不是$!。运行修改后的程序(尚未用 pp 编译)会给出有用的错误消息:

无法通过 IMAPClient 连接:无法连接到 imap.gmail.com:无法加载 'IO::Socket::SSL':无法在 @INC 中找到 IO/Socket/SSL.pm(@INC 包含:...) (评估 7)第 2 行。

似乎您忘记告诉编译器添加它自己无法检测到的隐藏依赖项。

于 2012-01-24T17:43:02.570 回答