我有一个打开* .pl文件的脚本,并希望它打印此文件中的所有哈希表。有没有办法在不知道哈希表名称的情况下做到这一点?
use Switch;
LOG("in a.pl");
# ----------------------------------------------------
%hash1 = (
abc_abc_123 => "xx",
abc_efg_321 => "zz",
);
%hash2 = (
abc_abc_456 => "uu",
abc_efg_654 => "ii",
);
答案 0 :(得分:0)
假设您有一个有效的文件将加载(与您的示例不同),其中包含哈希值。它在main :: package中查找与字母数字匹配的内容,并在从require中导入内容时发生了变化
use Data::Dumper;
sub show_hashes_from_file {
my $filename=shift;
my %snap=%main::;
require $filename;
my @hnames=grep(not(exists($snap{$_})) && /^[\w\d]+$/ && $_ ne $filename, keys %main::);
for my $name (@hnames) {
$stuff=\%{$main::{$name}};
print "$name ",Dumper($stuff) if (scalar keys(%$stuff) > 0);
}
}
show_hashes_from_file("hashes.pl");
您可能希望查看“package”关键字,除了在主命名空间中包含所有这些哈希值