【发布时间】:2023-03-24 17:00:02
【问题描述】:
我在运行 Windows XP 的 Strawberry Perl 中安装了一些模块,例如:
- 正则表达式::通用
- URI::Find::Schemeless
这些库在安装每个模块后第一次直接在我的 perl 代码中正常工作。
问题是我在接下来的每一天运行我的脚本,它们都会失败并出现以下错误:
无法在 @INC 中找到 Regexp/Common.pm(@INC 包含:C:/strawberry/perl/lib C:/strawberry/perl/site/lib C:\strawberry\perl\vendor\lib。)
我已将所有适当的路径放入 Windows 中的环境变量中:PERL5LIB 和其他诸如 lib,这些路径在 stackoverflow 和其他处理模块安装的其他网站上的各种其他答案中被建议。 除非我执行以下我想出的解决方法,否则脚本会继续失败:
- 在 Windows 中打开“编辑环境变量”窗口。 (“我的电脑”->“属性”->“高级”选项卡->“环境变量”)
- 不添加或更改任何内容,单击“确定”。
- 重新打开任何已打开的 perl 控制台或打开一个新的 perl 窗口。
- 现在找到的库都没有问题。
有人知道为什么会发生这种情况吗?我怀疑它可能与 Windows/cmd 甚至我公司的 Windows 环境设置特别相关?
任何建议都将不胜感激,因为这是一个非常烦人的问题!
【问题讨论】:
-
如果这是一台公司计算机,我不会惊讶地发现每天运行系统管理服务脚本来恢复某些环境更改。如果是这种情况,那么在使用
set PERL5LIB=whatever等调用 perl 脚本之前,您可能需要将 perl 脚本包装在一个明确设置这些变量的批处理文件中。 -
echo %PERL5LIB%在 Perl 控制台中运行时会打印什么? -
@cjm - 它说 c:\strawberry\lib;c:\strawberry\c\lib;c:\strawberry\perl\lib;c:\strawberry\perl\site\lib;c :\strawberry\perl\vendor\lib 这是库所在的位置。在我也做了一点“解决方法”之后,它就这么说了。真的很奇怪!
-
您使用的是什么版本的 Windows?我发现至少在 Vista (pcreview.co.uk/forums/…) 上发生了这种情况的报告,所以这不是一个完全独特的问题,但我没有找到解决方案。无论如何,这不是编程问题,所以它不属于 SO。
标签: windows perl environment-variables perl-module strawberry-perl