如何使用 Strawberry Perl 运行程序?
Posted
技术标签:
【中文标题】如何使用 Strawberry Perl 运行程序?【英文标题】:How do I run programs with Strawberry Perl? 【发布时间】:2010-10-14 15:01:50 【问题描述】:一位同事正试图在他的 Windows 机器上使用ack(一个 Perl 程序),他在 Linux 下尝试过它并决定他肯定想要使用它。他设法在他的机器上安装了Strawberry Perl,但似乎无法弄清楚如何从命令提示符下运行 ack 。他尝试编辑 #!行,但我知道那行不通。我很确定 Strawberry perl 在他的 PATH 中。
您需要做什么才能使用 Strawberry 在 Windows 上的 PATH 中运行通用 Perl 程序?
更新:我在网上看到一些关于 PATHEXT 变量的信息,但还不够。
【问题讨论】:
撤回我的回答,因为它是多余的,并且基于最初对您的问题的误解。 我希望你离开它,Frakkle。里面有一条对我有用的信息,但我不记得是什么了! 【参考方案1】:我只是安装 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:\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”。
【讨论】:
我们没有安装 App::Ack ...我们安装了独立的 ack 脚本。我将尝试通过 CPAN 安装 App::Ack,这可能适用于这种情况,但我仍然想更一般地了解如何通过修改 PATHEXT 来使其工作。 :) 是的,安装 App::Ack 然后将 ack.bat 从 perl\site\bin 复制到 perl\bin (至少,这是我必须做的)。无需修改 PATHEXT。 谢谢,xdg。这让它为我们运行。【参考方案2】:首先,注意程序在Path
,而不仅仅是perl.exe
。 Perl 二进制文件和核心程序通常以<installdir>\bin
结尾,但其他可能以站点特定目录<installdir>\site\bin
结尾。命令
dir C:\strawberry\ack* /s
可能有助于您的搜索。确保您的 Path
反映了您的设置。
至少据我所知,有两种常用方法可以从 Windows 命令提示符运行 Perl 程序。
首先是使用pl2bat创建程序的批处理版本,它将与程序一起执行perl
。已安装的程序通常会自动执行此操作,因为 MakeMaker
和 Module::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
中的顺序很重要。
安装程序通常会处理最后两个步骤,但如果您想添加自己的步骤或需要修复它,这些知识会很有用。
【讨论】:
【参考方案3】:另一种解决方案是使用 PAR::Packer 创建 ack.exe - 他根本不需要 Strawberry。
【讨论】:
【参考方案4】:1.安装草莓perl 2.打开perl命令行 3.编写命令perl test.pl
Steps
【讨论】:
以上是关于如何使用 Strawberry Perl 运行程序?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 VC++ 6.0 编译的应用程序中嵌入 Strawberry Perl 或在编译器不匹配的情况下使用 Inline::C 吗?
无法为模块 XML::LibXML 加载“C:/strawberry/perl/site/lib/auto/XML/LibXML/LibXML.dll”
使用端口(例如 localhost:12345)访问 IPv6 可解析 URL 会导致 Strawberry Perl 5.30.1 中出现错误地址