如何从perl中的第二个文件中获取所有哈希表

时间:2013-11-13 11:48:03

标签: perl

我有一个打开* .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",
 );

1 个答案:

答案 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”关键字,除了在主命名空间中包含所有这些哈希值