ski*_*ppy 27 windows perl ack strawberry-perl
一位同事试图在他的Windows机器上使用ack(一个Perl程序),在Linux下尝试过它,并决定他肯定想要使用它.他设法在他的机器上安装了Strawberry Perl,但似乎无法弄清楚如何从命令提示符下运行ack.他试着编辑#!但是我知道这不行.我很确定Strawberry perl是他的PATH.
在使用Strawberry的Windows上运行PATH中的常规Perl程序需要做什么?
更新:我在网上看到一些关于PATHEXT变量的信息,但还不够.
Ron*_*hke 21
首先,要小心程序是在Path,而不仅仅是perl.exe.Perl二进制文件和核心程序通常最终会进入<installdir>\bin,但其他人可能最终会进入特定于站点的目录<installdir>\site\bin.命令
dir C:\strawberry\ack* /s
Run Code Online (Sandbox Code Playgroud)
可能有助于你的搜索.确保您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" %*
Run Code Online (Sandbox Code Playgroud)
这样,您只需使用.pl扩展名命名它们即可调用程序.现在您可以使用调用该程序program.pl.
您可能已经注意到,您可以在没有扩展名的情况下在Windows上调用程序.在程序中搜索Path,但是当没有扩展名时,PATHEXT用于完成名称.附加.pl到列表,您可以调用该程序program.请注意,此列表中的顺序对于搜索非常重要,就像重要的顺序一样Path.
安装人员通常会处理最后两个步骤,但是如果您想添加自己的或需要修复它,这些知识非常有用.
xdg*_*xdg 17
我没有遇到只是安装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
...
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果是这样,我不明白为什么你不能从命令行运行"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.
Run Code Online (Sandbox Code Playgroud)
如果它不起作用,那个链中的东西会被打破?例如,如果你不能从命令行运行"perl",那么Strawberry没有正确安装(或者不在你的PATH中),你需要修复它.但是,否则,ack安装时会将"ack.bat"包装器安装到与"perl"相同的路径中,因此如果你可以运行"perl",你应该可以运行"ack".