Что включать при использовании Encode с PAR Packer

Я работал с PAR::Packer для создания автономных исполняемых файлов из сценариев Perl. Единственная трудность, с которой я столкнулся, это выяснить, какие дополнительные библиотеки DLL я должен заставить включить через -l вариант.

Сейчас я работаю со скриптом Perl, который требует кодирования с utf16-le. 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 опция работает, конечно, но использование ее было неприемлемо в моем случае, потому что она запускает программу, и, поскольку это приложение с графическим интерфейсом, эта команда больше не будет автоматизируемой.

Преступник был требованием времени выполнения, используемым Encode.pm, строка 120, для загрузки Encode::Unicode. Чтобы эта программа работала, я использовал следующее:

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

Обратите внимание, что использование обратной косой черты (способ Windows) вызывает сбой в pp команда, поэтому те должны были быть заменены с косыми чертами.

Другие вопросы по тегам