Создание исполняемой программы из Perl-скрипта

Я пытаюсь сделать исполняемую программу из готового perl-скрипта. Я без труда установил модуль PAR::Packer. Однако я не верю, что делаю это правильно. Ниже приведен код внутри скрипта, который я хочу скомпилировать:

use PAR::Packer qw(pp);

my %pp;
% pp -o prlgap.exe prlgap.pl;

Выше приведен пример, который я нашел на Perl Monk. Если я запускаю скрипт и получаю следующие ошибки:

Unquoted string "prlgap" may clash with future reserved word at
C:\Strawberry\prlgap.pl line 15. Syntax error at
C:\Strawberry\prlgap.pl line 15 near "% pp -o "

Третья строка в коде — это строка 15. Кажется странным пытаться скомпилировать программу, запустив ее. По моему опыту, это всегда делалось снаружи. Что мне не хватает?


person storm5510    schedule 10.01.2020    source источник
comment
Это похоже на опечатку. Вы объявили хэш %pp, а в следующей строке ссылка на % pp (обратите внимание на пробел). Это, безусловно, избавит от синтаксической ошибки.   -  person jakub-olczyk    schedule 10.01.2020
comment
pp – это инструмент командной строки, который вы запускаете в коде.   -  person Botje    schedule 10.01.2020
comment
да, pp -o ... это команда, которую вы должны выполнить. % должен указывать на командную строку   -  person ysth    schedule 10.01.2020


Ответы (1)


После некоторого поиска в Интернете я обнаружил, что это делается извне. Просто pp program.pl в командной строке. Предостережение: это действительно тормозит, если у вас есть что-то, что быстро запускает цикл. Кроме того, результирующий исполняемый файл был действительно большим. Мой 65-строчный скрипт скомпилирован в восьмимегабайтную программу после того, как я удалил все ненужные модули. Установщик Strawberry добавляет переменные среды, что делает возможным запуск скрипта из любого места на диске. Требуется только добавить расширение .pl к имени. Program.pl например.

Всем спасибо за ответы...

person storm5510    schedule 11.01.2020