如何检索多个哈希值?我尝试使用使用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;
}
这里是如何使用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));