16

我有一个批处理脚本,它进行一些处理并调用一些 perl 脚本。

我的问题是是否有办法将 perl 代码直接放入批处理脚本并让它运行两种类型的脚本。

4

3 回答 3

25

Active Perl多年来一直在这样做!

下面是骨架。你只能调用 perl一次。因为传递它,所以-x开关表示您将找到嵌入在此文件中的 perl 代码,并且 perl 会读取该文件,直到找到 perl shebang ( #!...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
于 2010-06-17T15:21:35.897 回答
5

是的你可以。

事实上,这正是该pl2bat工具所做的:它将 perl 程序转换为嵌入 perl 程序的批处理文件。看看 pl2bat.bat 本身。

因此,您可以使用.pl,将其转换为pl2bat,然后根据需要调整批处理部分。批处理代码的最大部分必须放在文件末尾(靠近:end_of_perl标签),因为在顶部的代码中,您仅限于不使用单引号。

然而:

  • 如果您需要嵌入多个 perl 文件,这种简单的方法将不起作用
  • 这将是一场维护噩梦。

所以我建议改为在一个 Perl 程序中编写整个过程。

更新:如果您想将一个脚本和一些 Perl 模块合并到一个批处理文件中,您可以使用 合并 Perl 文件fatpack,然后将其应用于pl2bat结果。

于 2010-06-17T15:19:55.910 回答
1

一种方法可以做到这一点,但它不会很漂亮。您可以将您的 perl 代码回显到一个临时.pl文件中,然后从.bat.

于 2010-06-17T15:00:05.160 回答