我面临一个非常奇怪的问题。我有一个perl脚本,内部调用另一个perl脚本。当我从unix手动运行时,我没有遇到任何问题。
现在,当从control-m调度程序调度时,相同的脚本会为内部脚本提供编译错误,以便查找日期:操作包。
无法在@ INC.BEGIN中找到Date / Manip.pm失败 - 脚本编译中止。
不幸的是,由于客户问题,我无法在此附加脚本。
但有人可以帮忙吗?
答案 0 :(得分:1)
这通常意味着您在命令行上的库路径(当您从unix运行它时)与在control-m中运行它时的路径不同。
在脚本的顶部,在任何其他Perl代码之前,添加以下内容:
BEGIN { die 'INC: ' . join("\n", @INC) }
这将立即抛出一个异常,其中包含perl将搜索以查找模块的所有库路径。
现在在unix和contol-m中再次运行脚本。包含路径(包含在@INC中)的库可能不同。 control-m可能缺少一个或多个库路径。任何缺失的都可以明确包含在内:
use lib '/some/library/path';
这是一个简单的答案。
如果您遇到这个问题(通常是这种情况),那么您应该解决更大的环境问题,而且没有一个通用的答案。执行use lib
修复是一个快速的攻击,但从长远来看,这不是解决这个问题的正确方法。