我希望我的Perl脚本的行为与任何其他可执行文件(*.exe文件)一样.
myscript.pl我希望它执行而不是在文本编辑器中打开.myscript.pl而不是perl myscript.pl.myscript而不是myscript.pl.program | myscript而不是program | perl myscript.pl.您必须在Windows上进行许多更改才能使所有这些工作正常进行.用户通常偶然发现的东西,不工作,一次一个; 让他们感到困惑,他们是否犯了错误,Perl中存在错误,Windows中存在错误,或者他们想要的行为是不可能的.这个问题旨在提供一个单一的参考点,使一切工作在前面; 理想情况下,在这些问题发生之前.
相关问题:
Mic*_*man 58
注意:以下操作需要管理权限.对于使用命令提示符的步骤,必须通过Windows Vista/Windows 7上的"以管理员身份运行"启动.
在shell提示符下运行以下命令:
assoc .pl=PerlScript
ftype PerlScript=C:\bin\perl.exe "%1" %*
Run Code Online (Sandbox Code Playgroud)
替换C:\Perl\bin\perl.exe为Perl安装的路径.这使您可以运行myscript.pl而不是perl myscript.pl.
默认安装位置是:
C:\PerlC:\Strawberry.PL到PATHEXT环境变量.这使Windows在搜索PATH时认为*.pl文件是可执行的.它使您可以运行myscript而不是myscript.pl.
您可以为当前cmd会话设置它
set PATHEXT=%PATHEXT%;.PL
Run Code Online (Sandbox Code Playgroud)
永久设置(在Windows Vista或Windows 7下)
setx PATHEXT %PATHEXT%;.PL
Run Code Online (Sandbox Code Playgroud)
在Windows XP下,您必须使用GUI:
;.PL到当前值.I/O重定向(例如program | myscript)不适用于通过文件关联启动的程序.有一个注册表补丁来纠正问题.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\ExplorerInheritConsoleHandlesREG_DWORDDecimal1警告:原则上,这只应在Windows XP上使用.根据我的经验,它在Windows 7中也是必要的.在Windows 10中,这是主动有害的 - 程序执行但在stdout/stderr上什么都不产生.注册表项需要设置为0而不是1.
也可以看看:
如果修补注册表不是运行选项,program | perl -S myscript.pl
那么PATH中的脚本就不那么烦人了.
为Perl添加drop处理程序允许您通过拖放操作运行Perl脚本; 例如,将文件拖放到Windows资源管理器中的文件图标上并将其放在那里.运行以下脚本以将必要的条目添加到注册表:
use Win32::TieRegistry;
$Registry->Delimiter("/");
$perlKey = $Registry-> {"HKEY_CLASSES_ROOT/Perl/"};
$perlKey-> {"shellex/"} = {
"DropHandler/" => {
"/" => "{86C86720-42A0-1069-A2E8-08002B30309D}"
}};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29267 次 |
| 最近记录: |