Компиляция источника perl с использованием pp - PullRequest
0 голосов
/ 09 января 2012

У меня есть отлично работающий Perl-скрипт (написанный на терминале bash в Debian Linux), который не может быть выполнен (в Linux или Windows) при компиляции с использованием pp.Это может относиться к неудовлетворенным зависимостям в сборке, но я верю, что следующая команда упаковывает все зависимости в исполняемый файл:

    pp -o out.exe in.pl

Когда я говорю, что он отлично функционирует, я имею в виду, что предполагаемый вывод генерируется с помощьюбез ошибок, если я вызову ./in.pl из терминала bash.

Я хотел бы создать исполняемый файл, который будет работать на Linux или Windows (если для каждой ОС требуется отдельный файл, пусть будет так).

Это пакеты, включенные в источник:

use strict;
use warnings;
use charnames ":short";
binmode(STDOUT,":utf8");
use Term::ANSIColor;
use Number::Format;
use Finance::Quote;
use Finance::QuoteHist;
use Date::Manip;     # this may be included by Finance::QuoteHist

Если это поможет, вот сообщение об ошибке, которое я получаю (предупреждение, оно длинное):

ERROR: [config_var] invalid zone in SetDate
ERROR: [config_var] invalid zone in SetDate
Could not load either Text::CSV_XS or Text::CSV_PP : Can't locate Text/CSV_PP.pm in @INC (@INC contains: CODE(0x1422320) /tmp/par-username/cache-addd1cc2ee9285c150584c1853c2b67c0c482e7e/inc/lib /tmp/par-username/cache-addd1cc2ee9285c150584c1853c2b67c0c482e7e/inc CODE(0x11675b0) CODE(0x116ebc8)) at (eval 30) line 2.
BEGIN failed--compilation aborted at (eval 30) line 2.
at Finance/QuoteHist.pm line 13
Compilation failed in require at Finance/QuoteHist.pm line 13.
BEGIN failed--compilation aborted at Finance/QuoteHist.pm line 13.
Compilation failed in require at script/in.pl line 10.
BEGIN failed--compilation aborted at script/in.pl line 10.

Судя по ошибкам во время выполнения, проблема может быть связана с неудовлетворенными рекурсивными зависимостями (например, с зависимостями внутри Finance :: QuoteHist).Возможно, эти рекурсивные зависимости должны быть включены явно?Я впервые пытаюсь скомпилировать perl в исполняемый файл, так что спасибо за любые советы, которые вы можете дать.

1 Ответ

3 голосов
/ 09 января 2012

Вы можете попытаться использовать флаг -x для pp, как показано в документах .Он запускает сценарий и проверяет наличие зависимостей, что более точно, чем простое сканирование зависимостей.Я нуждался в этом при использовании Tk, и он творил чудеса.

...