4

我需要在运行 Oracle EBS 的 Solaris 9 SPARC 环境中创建几个 Perl 程序,其中一个将从 cron 运行。将运行 Perl 的 UNIX 帐户设置了所有环境变量以运行以 Oracle 为中心的程序,因此当我运行“/usr/bin/perl -V”时,会出现以下编译错误。幸运的是,cron 运行 Perl 不受 Oracle 环境设置的影响。

bash-2.05$ /usr/bin/perl -V
Perl lib version (5.00503) doesn't match executable version (5.008) at /u01/app/applmgr/pr/iAS/Apache/perl/lib/5.00503/sun4-solaris/Config.pm line 7.
Compilation failed in require.
BEGIN failed--compilation aborted.

我的第一个想法是使用 BEGIN 块来做一些房屋清洁工作,这样我就可以使用系统 Perl 而不是 Oracle EBS 提供的版本。

#!/usr/bin/perl

BEGIN {
  delete $ENV{PERL5LIB};
  delete @INC[0..$#INC];
  push @INC, map { "/usr/local/lib/perl5/$_" } (
    '5.8.0','5.8.0/sun4-solaris',
    'site_perl','site_perl/5.8.0','site_perl/5.8.0/sun4-solaris'
  );
}

print "Hello clean Perl environment! :)\n";

我不允许修改 UNIX 帐户的本地配置文件,那么这是处理这种情况的正确方法吗?

4

1 回答 1

4

该命令的-i选项env允许您在干净的环境中启动程序。从那时起env手册页:

   -i, --ignore-environment
          start with an empty environment

对于你的 perl 例子:

env -i perl -V
于 2013-06-13T22:26:17.740 回答