2012-01-24 11 views
3

の中の出力スクリプトを探しています。私は本当に奇妙な問題を抱えていますが、Ubuntuを実行しているとき(CentOSのevertyhingが動作しているときのみ)です。 Perlでスクリプトを作成し、Mail::IMAPClientモジュールを使用しました。Perl PPは/ script/

私は、次のコマンドを実行します。

pp -o myapp perlscript.pl 

すべてが働いているが、私は、バイナリスクリプト(myappという)を実行しようとしているとき、それは私に次のエラーを与える:

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

しかし、私はperlscript.plを実行しているときにすべてがOKです......
あなたは何らかの理由がありますか?

スクリプト:

#!/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  => '[email protected]', 
    Password => 'my_password', 
    Port  => 993, 
    Ssl  => 1, 
) 
    or die "Cannot connect through IMAPClient: $!"; 
+0

あなたは[問題を再現する]ために必要な情報を提供することを怠ります(http://www.chiark.greenend.org.uk/~sgtatham/bugs.html#showmehow)。あなたのプログラムを貼り付けることは良いスタートなので、22行目のエラーメッセージが何であるかを見ることができます。それまでは推測だけが可能です。 – daxim

+0

ページを編集....ライン22は "my $ imap = Mail :: IMAPClient-> new(" –

答えて

4

あなたは間違った方法をエラーチェックを行っています。 You must inspect [email protected]$!ではなく、コンストラクタです。あなたはそれが自分自身で検出できなかったadd the hidden dependencyにコンパイラに伝えるのを忘れたようです

Cannot connect through IMAPClient: Unable to connect to imap.gmail.com: Unable to load 'IO::Socket::SSL': Can't locate IO/Socket/SSL.pm in @INC (@INC contains: …) at (eval 7) line 2.

:修正プログラム(まだ頁でコンパイルされていない)を実行すると便利なエラーメッセージが表示されます。

+0

私はdaximに同意します。エラーメッセージはあなたの 'die'ステートメントからです。単に' Mail :: IMAPClient'は作成されませんでした。Mail :: IMAPClientのドキュメントを[Errors](http://search.cpan.org/dist/Mail-IMAPClient/lib/Mail/IMAPClient.pod #Errors)セクションでは、オブジェクトが作成されていないので、 '$ @'を調べる必要があることがわかります(これは[LastError](http://search.cpan.org/dist/ mail-IMAPClient/lib/Mail/IMAPClient.pod#LastError)メソッド) –

+0

daximの答えを拡張するには、次のコマンドを使用してアプリケーションをコンパイルしてください: 'pp -z 9 -M IO :: Socket :: SSL -o myapp – Stamm

+0

実際にコード例はどこかのGoogleからコピーされていて、$を見たことはありませんでした。「IO :: Socket :: SSLを使う」とcomを追加しました。それをもう一度積み重ねる...今すぐ働く。シンプル。ご助力ありがとうございます !! –