我需要在运行Oracle EBS的Solaris 9 SPARC环境中创建几个Perl程序,其中一个将从cron运行。将运行Perl的UNIX帐户具有设置为运行以Oracle为中心的程序的所有环境变量,因此当我运行" / usr / bin / perl -V"时,我收到以下编译错误。幸运的是,运行Perl的cron不受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帐户的本地配置文件,这是处理这种情况的正确方法吗?
答案 0 :(得分:4)
-i
命令的env
选项允许您在干净的环境中启动程序。从那时起env
手册页:
-i, --ignore-environment
start with an empty environment
对于你的perl例子:
env -i perl -V