【问题标题】:Can Perl and Batch run in the same batch file?Perl 和 Batch 可以在同一个批处理文件中运行吗?
【发布时间】:2010-06-17 14:52:10
【问题描述】:

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

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

【问题讨论】:

    标签: perl batch-file polyglot


    【解决方案1】:

    Active Perl 多年来一直这样做!

    下面是骷髅。你只能调用 perl once。因为将-x 开关传递给它表示您将在此文件中找到 embedded 的 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
    

    【讨论】:

    • 这正是我一直在寻找的东西!我会对此投票,但它告诉我要注册才能这样做。
    【解决方案2】:

    是的,你可以。

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

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

    但是:

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

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

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

    【讨论】:

    • 这就是问题所在。我有 2 个我想使用的 perl 文件。不过谢谢你的建议!
    【解决方案3】:

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

    【讨论】:

    • 想过这个,但认为这会让我的工作伙伴哭泣。 :)
    猜你喜欢
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2015-04-21
    相关资源
    最近更新 更多