如何使用perl检索多个哈希值?

问题描述 投票:0回答:1

如何检索多个哈希值?我尝试使用使用Hash :: MultiValue和get_all()。它将引发错误消息“无法在未定义的值上调用方法“ get_all””。为特定键实现多个值的此功能的哪个更好的选择?密钥的值是正在打开的文件。

use warnings;
use List::MoreUtils qw(firstidx);
use Hash::MultiValue;

my $key_in;
…
open ($FR, "<$i") or die "couldn't open list";
 while($line=<$FR>){ 
   if($line =~ /search_pattern/){
   my $idx = firstidx { $_ eq 'hash_key' } @tags;   
   my $key= @tags[$idx+1];
   $hash{$key}= Hash::MultiValue->new($key=>'$i');
} 
close($FR);
for my $key_in ( sort keys %hash ) {
    @key_in = $hash->get_all('$key_in');
    print "$key_in = $hash{$key_in}\n";
}
my $key_in = <STDIN>;
if (exists($hash{$key_in})){
$hash_value = $hash{$key_in};
}else{
    exit;
}
perl hash reference key
1个回答
0
投票

这里是如何使用get_all()中的Hash::MultiValue的示例:

Hash::MultiValue

输出

use strict;
use warnings;
use Data::Dumper qw(Dumper);
use Hash::MultiValue;

my $hash = Hash::MultiValue->new();
$hash->add(tag1 => 'file1');
$hash->add(tag1 => 'file2');
$hash->add(tag2 => 'file3');
my @foo = $hash->get_all('tag1');
print(Dumper(\@foo));
© www.soinside.com 2019 - 2024. All rights reserved.