if (@arr =~ /env1/) #checking enviroment
{
# Want to flush the @INC contents using below no lib
# --> Command before the perl get the libraries of my choice at the time of compilation
no lib "//First/lib/"; #flush INC
no lib "//Second/lib/"; #flush INC
print log1 "INC before current- @INC\n";
#set library of my choice with either syntax
BEGIN{ unshift @INC, "//Third/lib/" };
# or
use lib "//third/lib/";
print log1 "INC after- @INC\n";
print log2 "INC after- %INC\n";
print log3 map {"$_ => $INC{$_}\n"} keys %INC;
use DirHandle;
use File::Find;
use File::Copy;
print map {"$_ => $INC{$_}\n"} keys %INC;
}
上記のことがもっと簡単にできることを知りたいです。(libなしおよびlibコマンドを使用)を使用するには、Perlモジュールを含める必要がありますか?これは、複数の環境でスクリプトが実行されているための要件であり、環境の1つがダウンすると、スクリプトの実行が停止します。私はこれを達成するために、perlで使用するために選択したライブラリを渡します。
提案は大歓迎です。
編集: これが実際のコードです。
if (@temp[arr_index]=~ /env1/) #enviroment 1
{
BEGIN{ unshift @INC, "//server1/lib/" }; #server 1 for same app lower enviroment 1
BEGIN{ unshift @INC, "//server2/lib/" }; #server 2 for same app lower enviroment 1
use File::Copy;
}
elsif (@temp[arr_index]=~ /env2/) #enviroment 2
{
BEGIN{ unshift @INC, "//server1/lib/" }; #server 1 for same app lower enviroment 2
BEGIN{ unshift @INC, "//server2/lib/" }; #server 2 for same app lower enviroment 2
use File::Copy;
}
elsif (@temp[arr_index]=~ /env3/) #enviroment 3
{
BEGIN{ unshift @INC, "//server1/lib/" }; #server 1 for same app lower enviroment 3
BEGIN{ unshift @INC, "//server2/lib/" }; #server 2 for same app lower enviroment 3
use File::Copy;
}
@INC
-@INC
問題を引き起こしているすべての環境で同じ値を持つ。上記があなたの理解にいくらかの明確さを加えることを願っています。ありがとう。