4DOS->4NT->TCM-6ren">
gpt4 book ai didi

windows - 突然之间,perl 脚本不起作用,除非我在它们前面加上 "perl"并提供脚本的完整路径

转载 作者:可可西里 更新时间:2023-11-01 12:46:22 26 4
gpt4 key购买 nike

20 多年来,我一直在使用我自己的个人环境,该环境一直运行良好。大约 14 年前,我开始合并许多 perl 脚本。22 年来,我一直在使用同一棵命令行解释器树(NDOS->4DOS->4NT->TCMD,实际上都是同一个程序)。

我刚从 ActiveState windows perl 切换到 Strawberry Perl。

多年来,这就是我运行 perl 脚本所需要的一切:

SET .pl=perl

这就是您指定用什么程序打开东西的方式。

我可以简单地做到这一点:

c:\>test.pl
Hello, world!

一切顺利。永远。

今天,在一周前的操作系统中,一切都停止了。

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!

请注意,这在昨天甚至今天早些时候都运行良好。我不知道是什么改变了它,又是什么破坏了它,而且我已经看了很长时间,发现了相似但不完全相同的问题 - 并且没有修复帮助。

我有一大堆脚本。我真的很讨厌必须在每个人之前插入世界“perl”,然后限定完整路径!

实际上,我可能必须编写一个 perl.bat 包装器,将参数文件名转换为完全限定路径,并显式调用 perl。

我真的不想那样做。这是一个禁令援助解决方案。我想了解什么是错的,地址是,并解决它。

我开始讨厌 Windows 7...

最佳答案

我认为您的问题很可能是 .pl 与 perl.exe 的关联被破坏了。

查看注册表中的 HKEY_CLASSES_ROOT\.pl,它下面可能有 Perl(或称 FOO)子节点

现在看看 HKEY_CLASSES_ROOT\Perl 或 FOO,如果是的话。

它应该有一个shell\Open\command

应该是这样的

  "C:\Perl\bin\perl.exe" "%1" %*

当然,您系统上的 perl.exe 路径可能不同。 %* 是重要的一点,它将您传递给脚本的参数传递给 perl.exe

因此,当您在命令窗口中执行“test.pl foo bar”时,幕后的 shell 实际上正在调用

C:\perlpath\perl.exe C:\scriptpath\test.pl foo bar.

当您在 Windows 资源管理器中简单地选择一个 *.pl 文件并尝试将其与 perl.exe 相关联时,就会发生此类问题。

作为额外的好处,如果您将 .PL 添加到 PATHEXT 环境变量,您甚至不必指定 test.pl 只需 test 将调用 test.pl 如果它在路径中是第一个: )

关于windows - 突然之间,perl 脚本不起作用,除非我在它们前面加上 "perl"并提供脚本的完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6152032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com