0

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

1 回答 1

0

假设您有一个有效的文件,该文件将在此作品中加载(与您的示例不同)带有哈希值。它在 main:: 包中查找与字母数字匹配的内容,并且在从 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”关键字,除了在主命名空间中包含所有这些哈希

于 2013-11-13T12:34:49.073 回答