我正在尝试用perl创建一个.exe。它工作得很好,直到我尝试将它编译成一个可执行文件。我正在使用Komodo IDE 5。我已经发布了我的脚本和下面的错误。我已经添加了模块,LWP::UserAgent,NET和Google::Voice,但它仍然不能工作。我使用perlapp创建.exe
#!/usr/bin/perl -w
use strict;
use warnings;
use Google::Voice;
use Date::Calc qw(Delta_Days);
use Net::Twitter;
#Set Days
my @today = (localtime)[5,4,3];
$today[0] += 1900;
$today[1]++;
my @RT = (2012, 7, 7);
my $days = Delta_Days(@today, @RT);
#Get Quotes and Phone Numbers
open FILE, "c:/Countdown/countdownNumbers.txt" or die "Couldn't open file: $!";
my $numbers = join("", <FILE>);
close FILE;
open FILETWO, "c:/Countdown/Quotes.txt" or die "Couldn't open file: $!";
my $quotes = join("", <FILETWO>);
close FILETWO;
#Create Arrays and Lengths
my @numbersArray = split(/[\n\r\l]+/, $numbers);
my @quotesArray = split(/[\n\r\l]+/, $quotes);
my $length = @numbersArray;
my $QuotesLength = @quotesArray;
#Send Text Message
for(my $i = 0; $i < $length; $i++){
my $g = Google::Voice->new->login('secret', 'secret');
$g->send_sms($numbersArray[$i] => " Countdown\nDays Left: " . $days . "\n Quote:\n" . $quotesArray[0]);
}
#Send Twitter Message
my $nt = Net::Twitter->new(
traits => [qw/OAuth API::REST/],
consumer_key => 'secret',
consumer_secret => 'secret',
access_token => 'secret',
access_token_secret => 'secret'
);
my $result = $nt->update($days .' Days left!');
$result = $nt->update('Quote: ' . $quotesArray[0]);
#Rewrite the file and close it
open FILETWO, ">c:/Countdown/Quotes.txt";
for(my $i = 1; $i < $QuotesLength; $i++){
print FILETWO $quotesArray[$i] . "\n";
}
close FILETWO;错误
Algorithm\Diff\XS.pm:
error: Can't locate Algorithm\Diff\XS.pm
refby: C:\Perl\site\lib\Array\Diff.pm line 7
Date\Calc\XS.pm:
error: Can't locate Date\Calc\XS.pm
refby: C:\Perl\lib\Date\Calc.pm line 26
I18N\Langinfo.pm:
error: Can't locate I18N\Langinfo.pm
refby: C:\Perl\lib\Encode\Locale.pm line 51
JSON\PP58.pm:
error: Can't locate JSON\PP58.pm
refby: C:\Perl\lib\JSON\PP.pm
Net.pm:
error: Can't locate Net.pm
refby: perlapp --add Net::
Can't locate Mojo/EventEmitter.pm in @INC (@INC contains:) at /<C:\Users\Chris\Desktop\Countdown\RT.exe>Mojo/Base.pm line 32.
BEGIN failed--compilation aborted at /<C:\Users\Chris\Desktop\Countdown\RT.exe>Mojo/UserAgent.pm line 2.
BEGIN failed--compilation aborted at /<C:\Users\Chris\Desktop\RTCountdown\RT.exe>Google/Voice.pm line 6.
BEGIN failed--compilation aborted at RT.pl line 4.发布于 2012-02-26 07:15:44
将perl脚本编译成exe文件恐怕不是那么简单。)有关详细信息,请查看this discussion at Perlmonks。
从您引用的内容来看,您可以从安装其他模块开始修复: Algorithm::Diff::XS,Date::Calc::XS等。
发布于 2012-02-26 23:53:59
如果您使用的是最新版本的perlapp,请将此错误发送给ActiveState支持。
暂时可以使用PAR::Packer代替perlapp。安装带有cpan shell的PAR::Packer (ppm可能不起作用)。然后运行
pp -c t1.pl它将创建a.out。如果不起作用,可以从svn:http://svn.openfoundry.org/par/Module-ScanDeps/trunk/ -i安装Module::ScanDep来修复程序中可能出现的几个问题。
我从未使用过perlapp,但它可能有命令行开关来提供要包含的模块列表。
发布于 2012-09-06 15:36:48
我已经从http://search.cpan.org/src/RJBS/perl-5.16.1/ext/I18N-Langinfo/Langinfo.pm下载了Langinfo.pm到C:\Perl\lib\I18N,它可以工作了。
https://stackoverflow.com/questions/9448655
复制相似问题