如何让我的Perl脚本像Windows上的普通程序一样行事?
我希望我的Perl脚本像其他可执行文件(* .exe文件)一样运行。
- 当我双击
myscript.pl
我希望它执行,而不是在文本编辑器中打开。 - 我想运行
myscript.pl
而不是perl myscript.pl
。 - 我真的想运行
myscript
而不是myscript.pl
。 - 我想运行
program | myscript
program | myscript
而不是program | perl myscript.pl
program | perl myscript.pl
。 - 我想能够通过拖放运行我的脚本。
你必须在Windows上进行一些改变才能使所有这些工作都能正常工作。 用户通常偶然发现不能一次一个工作的事情; 让他们感到困惑,他们是否犯了一个错误,Perl中存在一个错误,Windows中有一个错误,或者他们想要的行为是不可能的。 这个问题的目的是提供一个单一的参考点,使一切工作的前台; 最好在这些问题发生之前。
相关问题:
- 如何让Perl脚本识别Win32 cmd控制台中的参数?
- 在没有扩展名的窗口上运行perl脚本
- Perl从命令行问题执行
- 我如何在Windows上读取pipe道input?
- Windows上的Perl,文件关联和I / Oredirect
- 如何创build拖放草莓Perl程序?
注意:下面的操作需要pipe理权限。 有关使用命令提示符的步骤,必须通过Windows Vista / Windows 7上的“以pipe理员身份运行”启动。
将* .pl文件与perl关联
在shell提示下运行以下命令:
assoc .pl=PerlScript ftype PerlScript=C:\bin\perl.exe "%1" %*
将C:\Perl\bin\perl.exe
replace为您的Perl安装path。 这使您可以运行myscript.pl
而不是perl myscript.pl
。
默认的安装位置是:
- ActivePerl:
C:\Perl
- 草莓Perl:
C:\Strawberry
将.PL
添加到PATHEXT环境variables中。
这使得Windows在searchPATH时认为* .pl文件是可执行的。 它使您能够运行myscript
而不是myscript.pl
。
您可以将其设置为当前的cmd会话
set PATHEXT=%PATHEXT%;.PL
要永久设置(在Windows Vista或Windows 7下)
setx PATHEXT %PATHEXT%;.PL
在Windows XP下,您必须使用GUI:
- 用鼠标右键单击我的电脑,然后单击属性。
- 点击高级选项卡。
- 点击环境variables。
- selectPATHEXT,然后单击编辑。
- 将
;.PL
添加到当前值。
使I / Oredirect工作(仅限于WinXP)
I / Oredirect(例如, program | myscript
)不适用于通过文件关联启动的程序。 有一个registry补丁来纠正这个问题。
- 启动registry编辑器
- find并单击以下registry项中的项:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
- 在编辑菜单上单击添加值,然后添加以下registry值:
- 值名称:
InheritConsoleHandles
- 数据types:
REG_DWORD
- 基数:
Decimal
- 价值数据:
1
- 值名称:
- 退出registry编辑器。
另请参阅STDIN / STDOUTredirect可能不起作用(如果从文件关联启动) 。
如果修补registry不是运行program | perl -S myscript.pl
的选项 program | perl -S myscript.pl
对PATH中的脚本不太恼人。
添加拖放处理程序
为Perl添加一个放置处理程序允许您通过拖放来运行Perl脚本; 例如将文件拖到Windows资源pipe理器中的文件图标上,然后将其放在那里。 运行以下脚本以将必要的条目添加到registry中:
use Win32::TieRegistry; $Registry->Delimiter("/"); $perlKey = $Registry-> {"HKEY_CLASSES_ROOT/Perl/"}; $perlKey-> {"shellex/"} = { "DropHandler/" => { "/" => "{86C86720-42A0-1069-A2E8-08002B30309D}" }};
一旦他们准备好由用户运行,使用pl2bat将你的perl脚本转换成batch file。
这个技巧通过perl -x
开关工作,根据perldoc perlrun
, perldoc perlrun
让Perlsearch第一行,就像#!.*perl
。
按照接受的答案中的说明,双击仍导致在Windows 10中使用记事本打开.pl文件 – 即使当perl.exe被设置为默认文件处理程序。
在ActivePerlfindJack Wu的评论后。 .pl文件不再执行,而是在记事本中打开,而我可以双击运行perl脚本,如下所示:
- select并右键单击.pl文件
- 使用“打开方式”子菜单“select另一个应用程序”
- select“总是使用这个应用程序来打开.pl文件”(现在就这样做 – select一个程序后,你不会得到机会)
- 滚动到“其他选项”的底部以find“更多应用程序”,然后select“在此PC上查找另一个应用程序”
- 导航到C:/ path / to / perl / bin /,然后select
Perl5.16.3.exe
(或等价的,取决于您安装的Perl版本:但不是Perl.exe
)
然后,Perl图标将出现在.pl文件旁边,双击将导致它们每次都按照需要在Perl中打开。