如何使用Strawberry Perl运行程序?

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

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

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


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

dir C:strawberryack* /s

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

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

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

第二个是创建一个.pl文件关联。 这是通过创建注册表项HKEY_LOCAL_MACHINESOFTWAREClasses.plShellOpenCommand (或HKEY_CURRENT_USER如果它仅适用于当前用户)并将(Default)值设置为

"C:strawberryperlbinperl.exe" "%1" %*

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

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

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


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

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:strawberryperlsitelibAppAck.pm
Installing C:strawberryperlsitelibAppAckPlugin.pm
Installing C:strawberryperlsitelibAppAckRepository.pm
Installing C:strawberryperlsitelibAppAckResource.pm
Installing C:strawberryperlsitelibAppAckPluginBasic.pm
Installing C:strawberryperlbinack
Installing C:strawberryperlbinack.bat
Writing C:strawberryperlsitelibautoack.packlist
Appending installation info to C:strawberryperllib/perllocal.pod
  PETDANCE/ack-1.88.tar.gz
  C:strawberrycbindmake.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”,那么Strawberry没有正确安装(或者不在你的PATH中),你需要修复它。 但除此之外,ack会使用“ack.bat”包装器安装到“perl”相同的路径中,所以如果你可以运行“perl”,你应该可以运行“ack”。


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

链接地址: http://www.djcxy.com/p/8285.html

上一篇: How do I run programs with Strawberry Perl?

下一篇: How to use concerns in Rails 4