2012-01-24 3 views
3

안에있는 출력 스크립트를 검색하고 있습니다. 정말 이상한 문제가 있지만 (CentOS 에바시가 작동하고있을 때만) 우분투를 실행할 때만 나타납니다. Perl에서 스크립트를 만들고 Mail::IMAPClient 모듈을 사용했습니다.Perl PP는/script/

나는 다음과 같은 명령을 실행하면 :

Cannot connect through IMAPClient: No such file or directory at script/perlscript.pl line 22. 
: 나는 진 스크립트 (MyApp를)을 실행하기 위해 노력하고있어 때

pp -o myapp perlscript.pl 

모든 것이 작동되지만를, 그것은 나에게 다음과 같은 오류를 제공합니다

하지만 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  => '[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의 설명서를 [오류] (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) method). –

+0

daxim의 대답을 확장하려면 다음 명령을 사용하여 응용 프로그램을 컴파일하십시오.''pp -z 9 -M IO :: Socket :: SSL -o myapp perlscript.pl' -z 9'는 바이너리 크기를 줄이기위한 것입니다. – Stamm

+0

실제로 코드 예제가 Google 어딘가에서 복사되었지만 결코 $!를 보지 않았습니다. "IO :: Socket :: SSL 사용"과 com을 추가했습니다. 그것을 다시 쌓아 올리면 ... 이제 효과가있다. 단순한. 당신의 도움을 주셔서 대단히 감사합니다 !! –