【发布时间】:2020-01-08 09:28:04
【问题描述】:
如何检索多个哈希值?我尝试使用 使用 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;
}
【问题讨论】:
-
能否举例说明输入文件
$i的内容?和标签数组@tags? -
该文件仅包含带有各种种子和开关的测试命令
-
始终使用
use strict; use warnings;。您正在使用$hash而没有创建这样的 var。这会发现你的错误。 -
'$key_in'生成字符串$key_in,这肯定不是你想要的!