4

Oracle EBS を実行している Solaris 9 SPARC 環境でいくつかの Perl プログラムを作成する必要があります。そのうちの 1 つは 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.

私が最初に考えたのは、Oracle EBS が提供するバージョンではなくシステム Perl を使用できるように、BEGIN ブロックを使用してハウス クリーニングを行うことでした。

#!/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