我希望我的Perl脚本的行为与任何其他可执行文件(*.exe文件)一样.
myscript.pl我希望它执行而不是在文本编辑器中打开.myscript.pl而不是perl myscript.pl.myscript而不是myscript.pl.program | myscript而不是program | perl myscript.pl.您必须在Windows上进行许多更改才能使所有这些工作正常进行.用户通常偶然发现的东西,不工作,一次一个; 让他们感到困惑,他们是否犯了错误,Perl中存在错误,Windows中存在错误,或者他们想要的行为是不可能的.这个问题旨在提供一个单一的参考点,使一切工作在前面; 理想情况下,在这些问题发生之前.
相关问题:
有人能解释通过文件关联调用perl脚本与通过显式调用相同脚本之间的区别perl.exe吗?
显然,当通过文件关联调用脚本时,I/O重定向不能很好地工作,我真的很想知道原因.
例如,在Windows上查看Perl的Activestate FAQ.cat file只要脚本没有通过重定向接收输入,该示例就可以正常工作.所以
cat file.txt
Run Code Online (Sandbox Code Playgroud)
按预期工作,但是
whoami | cat.pl
Run Code Online (Sandbox Code Playgroud)
才不是.不仅.pl需要扩展,而且显然输出whoami不会通过管道传输到脚本中.运行脚本(可以通过修改示例cat.pl脚本来验证),但由于某种原因,它不会接收whoami输入的输出.
但是,如果我像这样调用脚本:
whoami | perl cat.pl
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作.
显然,通过文件关联运行脚本和perl.exe使用脚本显式调用之间存在重要区别.
常见问题解答提到了这个问题,并指出pl2bat用于为脚本生成bat文件封面修复了问题,但我不明白为什么这是必要的.
请赐教.