加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl嵌套哈希哈希

发布时间:2020-12-16 06:08:28 所属栏目:大数据 来源:网络整理
导读:我在根据文本输入确定如何在perl中创建嵌套哈希时遇到了一些麻烦. 我需要这样的东西 my % hash = {key1 = %inner-hash,key2 = %inner-hash2} 然而我的问题是我不知道apriori会有多少内部哈希.为此,我编写了以下片段来测试是否可以在循环中创建str变量,并将
我在根据文本输入确定如何在perl中创建嵌套哈希时遇到了一些麻烦.

我需要这样的东西

my % hash = {
key1 => %inner-hash,key2 => %inner-hash2
}

然而我的问题是我不知道apriori会有多少内部哈希.为此,我编写了以下片段来测试是否可以在循环中创建str变量,并将其引用存储在数组中,然后再解除引用.

{
    if($line =~ m/^Limits+$mc_lims+$date_time_lims+$float_vals+$mcs+$middle_junks+$limit  s+$value/) {
        my $str = $1 . ' ' . $2 . ' ' . $7;
        push (@test_array_reference,$str);
     }
}
foreach (@test_array_reference) {  
    say $$_;
}

Perl死于标量运行时错误.我在这里有点失落.任何帮助将不胜感激.

解决方法

要回答您的第一个(主要?)问题,如果您浏览文本并随时创建它们,则无需知道要创建多少哈希值.此示例使用以空格分隔的字符串的单词作为键,但您可以使用任何输入文本作为您的用途.

my $text = 'these are just a bunch of words';
my %hash;

my $hashRef = %hash;           # create reference to initial hash
foreach (split('s',$text)){
    $hashRef->{$_} = {};        # create anonymous hash for current word
    $hashRef = $hashRef->{$_};  # walk through hash of hashes
}

您还可以引用任意内部哈希并设置值,

$hash{these}{are}{just}{a}{bunch}{of}{words} = 88;
$hash{these}{are}{just}{a}{bunch}{of}{things} = 42;
$hash{these}{things} = 33;

要想象这一点,Data:Dumper可能有所帮助,

print Dumper %hash;

哪个生成,

$VAR1 = 'these';
$VAR2 = {
          'things' => 33,'are' => {
                     'just' => {
                                 'a' => {
                                          'bunch' => {
                                                       'of' => {
                                                                 'things' => 42,'words' => 88
                                                               }
                                                     }
                                        }
                               }
                   }
        };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读