来自control-m调度程序的perl脚本编译问题

时间:2014-01-25 04:07:23

标签: perl control-m perl-package

我面临一个非常奇怪的问题。我有一个perl脚本,内部调用另一个perl脚本。当我从unix手动运行时,我没有遇到任何问题。

现在,当从control-m调度程序调度时,相同的脚本会为内部脚本提供编译错误,以便查找日期:操作包。

无法在@ INC.BEGIN中找到Date / Manip.pm失败 - 脚本编译中止。

不幸的是,由于客户问题,我无法在此附加脚本。

但有人可以帮忙吗?

1 个答案:

答案 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修复是一个快速的攻击,但从长远来看,这不是解决这个问题的正确方法。