Perl и Пакет могут работать в том же пакетном файле?

У меня есть сценарий пакетной обработки, который делает некоторую обработку и называет некоторые сценарии жемчуга.

Мой вопрос состоит в том, если был способ поместить код жемчуга непосредственно в сценарий пакетной обработки и иметь выполненный оба типа сценариев.

15
задан Ether 17 June 2010 в 16:27
поделиться

3 ответа

Active Perl делает это уже много лет!

Ниже приведен скелет. Вы можете вызвать perl только один раз. Потому что передача ему ключа -x говорит, что вы найдете код perl встроенным в этот файл, и perl будет читать вниз по файлу, пока не найдет шебанг perl (#!...perl) и начнет выполнять его там. Perl будет игнорировать все, что находится после __END__, а поскольку вы сказали DOS goto endofperl, он не будет ничем заниматься, пока не доберется до метки.

@rem = '--*-Perl-*--
@echo off
perl -x -S %0 %*
goto endofperl


@rem -- BEGIN PERL -- ';
#!d:/Perl/bin/perl.exe -w
#line 10

use strict; 


__END__
:endofperl
24
ответ дан 1 December 2019 в 02:18
поделиться

Да, можете.

Фактически это именно то, что делает инструмент pl2bat: он преобразует программу perl в пакетный файл, который встраивает программу perl. Взгляните на сам файл pl2bat.bat.

Итак, вы можете взять .pl, преобразовать его с помощью pl2bat, а затем подправить пакетную часть так, как вам нужно. Самая большая часть пакетного кода должна быть помещена в конец файла (рядом с меткой :end_of_perl), потому что в коде сверху вы ограничены в использовании одинарных кавычек.

Однако:

  • этот простой подход не будет работать, если вам нужно внедрить более одного файла perl
  • это будет кошмар для обслуживания.

Поэтому я предлагаю вместо этого написать весь процесс в одной Perl-программе.

Обновление: если у вас есть один скрипт и несколько модулей Perl, которые вы хотите объединить в один пакетный файл, вы можете объединить Perl-файл с помощью fatpack, а затем применить pl2bat к результату.

4
ответ дан 1 December 2019 в 02:18
поделиться

Есть способ сделать это, но он не будет красивым. Вы можете повторить свой код Perl во временном файле .pl , а затем запустить этот файл из вашего .bat .

1
ответ дан 1 December 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: