引用在另一个 Perl 模块文件中创建散列的 Perl 模块,该文件将散列设置为等于该散列
Reference a Perl Module that creates a hash in another Perl Module file that sets the hash equal to that hash
我有 2 个 perl 模块文件 (.pm)。 File_A.pm
位于 /some/dir/here/File_A.pm
。我有一个 File_B.pm
位于 /some/other/dir/File_B.pm
.
File_B.pm
将设置它的 my %machines
散列等于 /some/dir/here/File_A.pm
的 %machines
如果 File_A.pm
可以使用 if (-r '/some/dir/here/File_A.pm')
读取,否则它将使用 File_B.pm
中定义的标准散列作为 my %machines = ()
.
我试过下面的代码
但是,这对我不起作用。
package some::other::dir::File_B;
use strict;
use vars qw(@ISA @EXPORT $VERSION);
use Cwd;
use some::dir::File_A;
use Exporter;
$VERSION = 1.0;
@ISA = qw(Exporter);
@EXPORT =
qw(getMachines printMachines getMachineAttributes printMachineAttributes);
if(-r '/some/dir/here/File_A.pm'){
my %machines = do q{/some/dir/here/File_A.pm};
else{
my %machines = (
"some.fqdn.com" => {
role => ["someRole"],
environment => "test",
location => "USA",
os => "Ubuntu",},
)
}
###################################
#I have getMachines, printMachines, getMachineAtrributes, and
#printMachineAttributes below here in my code
####################################
我希望逻辑使用 File_A.pm 我的 %machines 散列,如果它是可读的,如果不使用备份我的 %machines 散列,以防 File_A.pm 不知何故变得不可读。
用my定义的词法变量的范围从声明到封闭块的末尾。第一个 my %machines
没有在 "then" 块中存活,第二个在 "else" 块结束时消失。
请注意,如果 File_A 可由恶意用户写入,则他们可以向其中插入任何代码。使用 INI 文件或 JSON、YAML、XML 或任何填充散列的内容更安全。
我有 2 个 perl 模块文件 (.pm)。 File_A.pm
位于 /some/dir/here/File_A.pm
。我有一个 File_B.pm
位于 /some/other/dir/File_B.pm
.
File_B.pm
将设置它的 my %machines
散列等于 /some/dir/here/File_A.pm
的 %machines
如果 File_A.pm
可以使用 if (-r '/some/dir/here/File_A.pm')
读取,否则它将使用 File_B.pm
中定义的标准散列作为 my %machines = ()
.
我试过下面的代码
但是,这对我不起作用。
package some::other::dir::File_B;
use strict;
use vars qw(@ISA @EXPORT $VERSION);
use Cwd;
use some::dir::File_A;
use Exporter;
$VERSION = 1.0;
@ISA = qw(Exporter);
@EXPORT =
qw(getMachines printMachines getMachineAttributes printMachineAttributes);
if(-r '/some/dir/here/File_A.pm'){
my %machines = do q{/some/dir/here/File_A.pm};
else{
my %machines = (
"some.fqdn.com" => {
role => ["someRole"],
environment => "test",
location => "USA",
os => "Ubuntu",},
)
}
###################################
#I have getMachines, printMachines, getMachineAtrributes, and
#printMachineAttributes below here in my code
####################################
我希望逻辑使用 File_A.pm 我的 %machines 散列,如果它是可读的,如果不使用备份我的 %machines 散列,以防 File_A.pm 不知何故变得不可读。
用my定义的词法变量的范围从声明到封闭块的末尾。第一个 my %machines
没有在 "then" 块中存活,第二个在 "else" 块结束时消失。
请注意,如果 File_A 可由恶意用户写入,则他们可以向其中插入任何代码。使用 INI 文件或 JSON、YAML、XML 或任何填充散列的内容更安全。