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;
}
我想知道上面的事情可以用更简单的方式来实现。我是否需要包含任何 Perl 模块才能使用(没有 lib 和使用 lib 命令)。这是一个要求,因为脚本在多个环境中运行,并且当其中一个环境关闭时,脚本将停止运行。我想通过传递我选择的库供 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
对于导致问题的所有环境具有相同的值。希望以上内容能让您的理解更加清晰。谢谢。