3

我在 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 和其他处理模块安装的其他网站上的各种其他答案中被建议。除非我执行以下我想出的解决方法,否则脚本会继续失败:

  1. 在 Windows 中打开“编辑环境变量”窗口。(“我的电脑”->“属性”->“高级”选项卡->“环境变量”)
  2. 不添加或更改任何内容,单击确定。
  3. 重新打开任何已经打开的 perl 控制台或打开一个新的 perl 窗口。
  4. 现在这些库都找到了,没有问题。

有谁知道为什么会发生这种情况?我怀疑它可能与 Windows/cmd 甚至我公司的 Windows 环境设置特别相关?

任何建议将不胜感激,因为这是一个非常烦人的问题!

4

1 回答 1

1

默认情况下,Windows 不会每天清除环境变量,因此您的公司设置中可能会重置环境变量。

如果是这种情况,您有几个选择:

  1. 让网络管理员修改脚本,使其不会重置它们(或包含PERL5LIB您要指定的目录)。
  2. 编写另一个日常任务,在他们的日常任务之后运行,这会在您的本地计算机上重新添加变量。
  3. 使用 Windows 批处理文件包装您的 perl 脚本,或者perl -I在运行时使用它们来指定库。
  4. 从 Cygwin bash 或 mingw bash 运行您的 perl 脚本,它们不会使用您计算机的全局环境变量。
于 2013-11-20T14:17:33.117 回答