一个同事试图在他的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
。 安装的程序通常会自动执行此操作,因为MakeMaker
和modulee::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
)