我像这样哈希哈希:
$hashtest{ 1 } = {
0 => "A",
1 => "B",
2 => "C"
};
例如,如何获取散列{1}的B值?
$hashtest{'B'}{1}
答案 0 :(得分:3)
其他人提供了众所周知的鱼
Perl免费在线(并在您的命令提示符下)提供文档。以下是一些相关链接:
答案 1 :(得分:3)
根据您对其他回复的评论, 你可以反转哈希(即交换密钥和值)。
但是只有在你确定的情况下才要小心这样做 原件中没有重复的值 因为此操作只保留其中一个。
#!/usr/bin/perl
use 5.10.1;
use warnings;
use strict;
my %hashtest;
$hashtest{ 1 } = { 0 => "A", 1 => "B", 2 => "C" };
my %rev = reverse %{$hashtest{1}};
say $rev{B};
输出:
1
答案 2 :(得分:1)
$hashtest{ 1 } = { 0 => "A", 1 => "B", 2 => "C" };
my $index;
my $find = "B";
foreach my $key (keys %{ $hashtest{1} }) {
if($hashtest{1}{$key} eq $find) {
$index = $key;
last;
}
}
print "$find $index\n";
答案 3 :(得分:0)
由于您使用了哈希键的数字,在我看来,您应该使用数组。否则,当反转哈希时,您将丢失重复的密钥。
示例代码:
use strict;
use warnings;
use List::MoreUtils 'first_index';
my $find = 'A';
my @array = qw{ A B C };
my $index = first_index { $_ eq $find } @array;
Perl Data Structures Cookbook将帮助您了解Perl中的数据结构。
答案 4 :(得分:0)
如果你的所有键都是整数,那么你很可能想要处理数组而不是哈希:
$array[1] = [ qw( A B C ) ]; # Another way of saying [ 'A', 'B', 'C' ]
print $array[1][1]; # prints 'B'
答案 5 :(得分:-1)
$hashtest{1}{1};