28

一位同事试图在他的 Windows 机器上使用ack(一个 Perl 程序),他在 Linux 下尝试过,并决定他肯定想使用它。他设法在他的机器上安装了Strawberry Perl,但似乎无法弄清楚如何从命令提示符下使用它运行 ack。他尝试编辑 #! 行,但我知道那行不通。我很确定 Strawberry perl 在他的 PATH 中。

使用 Strawberry 在 Windows 上的 PATH 中运行通用 Perl 程序需要做什么?

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

4

4 回答 4

21

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

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)值设置为

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

这样,您只需使用.pl扩展名命名程序即可调用程序。现在您可以使用program.pl.

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

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

于 2009-03-21T16:25:46.557 回答
17

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

草莓 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”。

于 2009-03-20T20:03:14.750 回答
3

另一种解决方案是使用 PAR::Packer 创建 ack.exe - 他根本不需要 Strawberry。

于 2009-05-08T10:32:42.483 回答
0

1.安装strawberry-perl 2.打开perl命令行 3.编写命令perl test.pl

脚步

于 2019-05-17T04:52:28.383 回答