我有一个批处理脚本,它进行一些处理并调用一些 perl 脚本。
我的问题是是否有办法将 perl 代码直接放入批处理脚本并让它运行两种类型的脚本。
我有一个批处理脚本,它进行一些处理并调用一些 perl 脚本。
我的问题是是否有办法将 perl 代码直接放入批处理脚本并让它运行两种类型的脚本。
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
是的你可以。
事实上,这正是该pl2bat
工具所做的:它将 perl 程序转换为嵌入 perl 程序的批处理文件。看看 pl2bat.bat 本身。
因此,您可以使用.pl
,将其转换为pl2bat
,然后根据需要调整批处理部分。批处理代码的最大部分必须放在文件末尾(靠近:end_of_perl
标签),因为在顶部的代码中,您仅限于不使用单引号。
然而:
所以我建议改为在一个 Perl 程序中编写整个过程。
更新:如果您想将一个脚本和一些 Perl 模块合并到一个批处理文件中,您可以使用 合并 Perl 文件fatpack
,然后将其应用于pl2bat
结果。
有一种方法可以做到这一点,但它不会很漂亮。您可以将您的 perl 代码回显到一个临时.pl
文件中,然后从.bat
.