如何编译我的Perl脚本,以便可以在没有安装perl的系统上执行?

Use*_*611 54 perl

我有一个.pl文件,我想在任何系统中执行该文件,即使perl没有安装.我怎样才能实现它?

任何人都可以通过一些很好的例子告诉我这样做吗?

yst*_*sth 43

pp可以创建包含perl和您的脚本(以及任何模块依赖项)的可执行文件,但它将特定于您的体系结构,因此您无法在Windows和Linux上运行它.

从它的文档:

要创建独立的可执行文件,适合在未安装perl的计算机上运行:

   % pp -o packed.exe source.pl        # makes packed.exe
   # Now, deploy 'packed.exe' to target machine...
   $ packed.exe                        # run it
Run Code Online (Sandbox Code Playgroud)

(%和$在不同的机器上有命令提示).

  • @lokesh:首先你安装pp(Par-Packer发行版的一部分,所以你要安装Par :: Packer),然后执行上面的pp命令,使用你的脚本代替source.pl.它应该检测您使用的模块并包含它们. (2认同)

Ale*_*nii 29

  1. 安装PAR::Packer.*nix的示例:

    sudo cpan -i PAR::Packer

    对于Windows的Strawberry Perl或安装的ActivePerl和MSVC:

    cpan -i PAR::Packer
  2. 打包pp.它将在Windows上创建名为"example"或"example.exe"的可执行文件.

    pp -o example example.pl

这只适用于构建它的操作系统.

PS如果没有Perl,很难找到Unix克隆.你的意思是Windows?

  • 如果要打包的代码需要交叉编译,PAR不是一个完整的解决方案. (3认同)
  • 此外,您不需要-i开关到cpan.只需给它一个模块列表,它就会为你找出这个部分.:) (3认同)

bri*_*foy 8

perlfaq3的答案我怎样才能将我的Perl程序编译成字节码或C?:


(由brian d foy提供)

一般来说,你不能这样做.有些事情可能对你的情况有用.人们通常会问这个问题,因为他们想要在不泄露源代码的情况下分发他们的作品,并且大多数解决方案为了方便而交换磁盘空间 您可能也不会看到太多的速度增加,因为大多数解决方案只是在最终产品中捆绑Perl解释器(但请参阅如何使我的Perl程序运行得更快?).

Perl Archive Toolkit(http://par.perl.org/)是Perl与Java JAR的类比.它可以在CPAN上免费获得(http://search.cpan.org/dist/PAR/).

虽然您必须为他们购买许可证,但也有一些商业产品可能适合您.

ActiveState 的Perl Dev Kit(http://www.activestate.com/Products/Perl_Dev_Kit/)可以"将您的Perl程序转换为HP-UX,Linux,Solaris和Windows的可立即运行的可执行文件".

Perl2Exe(http://www.indigostar.com/perl2exe.htm)是一个命令行程序,用于将perl脚本转换为可执行文件.它针对Windows和unix平台.

  • 请注意,这是2009年的答案,但Reini Urban有更新 (2认同)

Jar*_*aus 7

看看PAR(Perl Archiving Toolkit).

PAR是一个跨平台打包和部署工具,被称为Java的JARPerl2EXE/PerlApp之间的交叉.


Mat*_*tin 6

让我们不要忘记ActiveState的PDK.它将允许您编译UI,命令行,Windows服务和安装程序.

我强烈推荐它,多年来它一直很好用,但许可证大约300美元.


rur*_*ban 5

对Sinan和brian的注意:perlfaq3仍然是错误的.

请参阅http://search.cpan.org/dist/BC/perlcompile.pod