如何使用Strawberry Perl运行程序?

一个同事试图在他的Windows机器上使用ack (一个Perl程序),在Linux下尝试过,并决定使用它。 他设法将Strawberry Perl安装在他的机器上,但似乎无法弄清楚如何通过命令提示符运行它。 他试着编辑#! 线,但我知道这是行不通的。 我很确定草莓Perl是在他的path。

你需要做什么来使用草莓在Windows上的PATH中运行一般的Perl程序?

更新:我看到有关PATHEXTvariables的一些信息,但还不够。

首先,小心程序在Path ,而不仅仅是perl.exe Perl二进制文件和核心程序通常以<installdir>\bin结尾,而另一些可能以站点特定的目录<installdir>\site\bin 命令

 dir C:\strawberry\ack* /s 

可能会帮助您的搜索。 确保你的Path反映你的设置。

至少我知道有两种常用的方法可以从Windows命令提示符运行Perl程序。

首先是用pl2bat创建一个批处理版本的程序,该程序将执行perl 安装的程序通常会自动执行此操作,因为MakeMakermodulee::Build会处理这个问题。

其次是创建一个.pl文件关联。 这是通过创建注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pl\Shell\Open\Command (或HKEY_CURRENT_USER如果仅用于当前用户)并将(Default)值设置为

 "C:\strawberry\perl\bin\perl.exe" "%1" %* 

这样,你可以通过用.pl扩展名来命名它们来调用程序。 现在你可以用program.pl调用program.pl

您可能已经注意到,您可以在没有扩展名的情况下在Windows上调用程序。 该程序在Path搜索,但是当没有扩展名时,使用PATHEXT来完成名称。 .pl附加到列表中,您可以使用program调用该program 请注意,此列表中的顺序对搜索很重要,就像Path的顺序很重要一样。

安装人员通常会照顾最后两个步骤,但是如果您想添加自己的或需要修复它,这个知识是有用的。

我没有问题只是安装确认并从命令行运行它。

Strawberry Perl是否正确安装? 你能从cmd.exe运行“perl”吗?

 C:\> perl -V Summary of my perl5 (revision 5 version 10 subversion 0) configuration: Platform: osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread ... 

App :: Ack安装正确吗?

 C:\> cpan App::Ack ... Installing C:\strawberry\perl\site\lib\App\Ack.pm Installing C:\strawberry\perl\site\lib\App\Ack\Plugin.pm Installing C:\strawberry\perl\site\lib\App\Ack\Repository.pm Installing C:\strawberry\perl\site\lib\App\Ack\Resource.pm Installing C:\strawberry\perl\site\lib\App\Ack\Plugin\Basic.pm Installing C:\strawberry\perl\bin\ack Installing C:\strawberry\perl\bin\ack.bat Writing C:\strawberry\perl\site\lib\auto\ack\.packlist Appending installation info to C:\strawberry\perl\lib/perllocal.pod PETDANCE/ack-1.88.tar.gz C:\strawberry\c\bin\dmake.EXE install UNINST=1 -- OK 

如果是这样,我不明白为什么你不能从命令行运行“ack”:

 C:\> ack --version ack 1.88 Copyright 2005-2009 Andy Lester, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. 

如果它不起作用,那链中的哪个地方是坏东西? 例如,如果你不能从命令行运行“perl”,那么草莓没有正确安装(或者不在你的PATH中),你需要修复它。 但是除此之外,ack与“ack.bat”包装器一起安装到“perl”所在的路径中,所以如果你可以运行“perl”,你应该可以运行“ack”。

另一个解决方案是用PAR :: Packer创建ack.exe – 他根本不需要草莓。

如果他按照这个博客的指示,他应该没问题。 现在我还没有安装Strawberry Perl,但是IIRC,在安装之后,我就可以像使用Linux机器一样使用它了。 (如perl yourscripthere.pl