关于windows:如何使用Strawberry Perl运行程序?

How do I run programs with Strawberry Perl?

一个同事正在他的Windows机器上尝试使用ACK(一个Perl程序),在Linux下进行了尝试,并决定一定要使用它。他设法在自己的机器上安装了草莓Perl,但似乎无法从命令提示符中找到使用它运行ACK的方法。他试图编辑!行,但我知道这样不行。我很确定草莓珍珠在他的路上。

在使用草莓的Windows上运行路径中的通用Perl程序需要做什么?

更新:我在网上看到了一些关于pathext变量的信息,但还不够。


首先,注意程序在Path中,而不仅仅是perl.exe中。Perl二进制文件和核心程序通常以\bin结尾,但其他的可能以特定于站点的目录\site\bin结尾。命令

1
dir C:\strawberry\ack* /s

可能有助于你的搜索。确保您的Path反映了您的设置。

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

第一种方法是使用pl2bat创建程序的批处理版本,该版本将使用程序执行perl。安装的程序通常会自动执行此操作,因为MakeMakerModule::Build会处理此问题。

第二种方法是创建一个.pl文件关联。这是通过创建注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pl\Shell\Open\Command(如果仅针对当前用户,则创建HKEY_CURRENT_USER)并将(Default)值设置为

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

这样,您就可以通过使用.pl扩展名来命名程序。现在您可以使用program.pl调用该程序。

您可能已经注意到可以在Windows上调用程序而不需要扩展名。在Path中搜索该程序,但如果没有扩展名,则使用PATHEXT来完成名称。将.pl附加到列表中,您可以使用program调用程序。请注意,此列表中的顺序对于搜索很重要,就像Path中的顺序一样。

安装人员通常会处理最后两个步骤,但如果您想添加自己的或需要修复它,则此知识非常有用。


我在安装ACK并从命令行运行它时没有遇到任何问题。

草莓Perl安装正确吗?你能从cmd.exe运行"perl"吗?

1
2
3
4
5
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?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
epository.pm
Installing C:\strawberry\perl\site\lib\App\Ack
esource.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":

1
2
3
4
5
6
7
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",那么草莓没有正确安装(或者不在您的路径中),您需要修复它。但否则,ACK将安装一个"ack.bat"包装器,其路径与"perl"相同,因此如果您可以运行"perl",则应该能够运行"ack"。


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


如果他遵守了这篇博文的指示,他应该会没事的。我已经有一段时间没有安装草莓Perl了,但是iirc,在安装之后,我可以像在Linux机器上那样使用它。(如perl yourscripthere.pl)