Cli*_*JCL 8 windows perl command-line prefix strawberry-perl
我一直在使用自己的个人环境,这种环境已经持续了20多年.大约14年前,我开始整合许多perl脚本.我一直使用相同的命令行解释器树22年(NDOS-> 4DOS-> 4NT-> TCMD,真的都是相同的程序).
我刚从ActiveState windows perl切换到Strawberry Perl.
多年来,这就是我运行perl脚本所需的全部内容:
SET .pl=perl
Run Code Online (Sandbox Code Playgroud)
这是你如何指定打开东西的程序.
我可以这样做:
c:\>test.pl
Hello, world!
Run Code Online (Sandbox Code Playgroud)
事情很有效.永远.
今天,在一周的操作系统中,事情就停止了.
Perl脚本将运行,但它们不会做任何事情.没错.没有输出.没有.
唯一可行的方法是,如果我在脚本前添加"perl"(在这种情况下,我的路径不会被搜索,因为脚本名称现在是一个参数,所以我不得不填写脚本的完整路径)
这就是我成为的样子:
C:\>test.pl
C:\>perl test.pl
Can't open perl script "test.pl": No such file or directory
C:\>perl c:\bat\test.pl
Hello, world!
Run Code Online (Sandbox Code Playgroud)
请注意,昨天工作正常,甚至更早.我不知道是什么改变了这个,什么打破了它,我看了很长时间,发现了类似但不完全相同的问题 - 没有任何修复有帮助.
我有一大堆脚本.我真的很讨厌必须在每个人之前插入世界"perl",然后才能获得完整的路径!
实际上,我可能不得不编写一个perl.bat包装器,它将参数filename转换为完全限定的路径,并显式调用perl.
我真的不想那样做.这是一个禁令援助解决方案.我想知道什么是错的,地址是,并解决它.
我开始讨厌Windows 7 ......
我认为您的问题很可能与.pl到perl.exe的关联被破坏了.
在注册表中查看HKEY_CLASSES_ROOT\.pl它下面可能有Perl(或说FOO)子节点
现在看看HKEY_CLASSES_ROOT\Perl或FOO,如果是这样的话.
它应该有一个shell\Open \命令键
应该看起来像这样
"C:\Perl\bin\perl.exe" "%1" %*
Run Code Online (Sandbox Code Playgroud)
当然,系统上的perl.exe路径可能不同.的%*是通过你传递给你的脚本perl.exe所在参数的重要位
因此,当您在命令窗口中执行"test.pl foo bar"时,幕后的shell实际上是在调用
C:\perlpath\perl.exe C:\scriptpath\test.pl foo bar.
Run Code Online (Sandbox Code Playgroud)
当您只是在Windows资源管理器中选择*.pl文件并尝试将其与perl.exe关联时,会发生此类问题.
作为一个额外的好处,如果你将.PL添加到PATHEXT环境变量,你甚至不必指定test.pl,如果它是路径中的第一个,则test将调用test.pl :)
| 归档时间: |
|
| 查看次数: |
4658 次 |
| 最近记录: |