2013-08-30 49 views
1

我一直在使用PAR :: Packer來創建獨立的可執行文件。我遇到的唯一困難是計算出我通過-l選項強制包含哪些額外的DLL。與PAR包裝器一起使用編碼時應包括什麼

我現在正在使用一個需要使用utf16-le編碼的Perl腳本。 Encode::find_encoding函數在腳本中工作得很好,但在將它與pp一起打包後,它不起作用。

這裏有一個微小的腳本(讓我們encode.pl稱呼它)來說明問題:

use strict; 
use warnings; 
use Encode; 
my $_UTF16 = Encode::find_encoding ('utf16-le'); 
print $_UTF16; 

如果你運行它,它會打印出類似這樣Encode::Unicode=HASH(xxxxxx)。與pp包起來,但是,它不再起作用:

pp -o encode_test.exe encode_test.pl 

現在,當我運行encode_test.exe,我得到這個:

Use of uninitialized value $_UTF16 in print at script/encode_test.pl line 5. 

誰能告訴我什麼,我需要做的(例如包含什麼樣的庫或任何其他解決方案),即使在使用pp進行打包之後,也可以使其正常工作?

回答

1

運行pp-x選項的作品,當然,但使用它在我的情況不可接受的,因爲這種運行程序,因爲這是一個GUI應用程序這個命令將不再是自動化的。

罪魁禍首是Encode.pm使用的運行時要求,第120行,加載Encode :: Unicode。爲了使這一工作方案,我用了以下內容:

pp -o encode_test.exe encode_test.pl -M C:/strawberry/perl/lib/Encode/Unicode.pm 

注意,使用反斜槓(Windows的方式)引起pp命令失敗,所以那些曾與斜槓被替換。

相關問題