所以,我有一个散列%HoHoA。 每个顶级散列键都有一个第二级散列键作为值。 每个二级哈希都有数组数组作为值。
在perl的调试器中,它看起来像这样:
0 'Top_key_1'
1 HASH(0x...)
'Second_Key_1' => ARRAY(0x...)
0 'string 1'
1 'string 2'
'Second_Key_2' => ARRAY(0x...)
0 ARRAY(0x...)
0 'string 3'
1 'string 4'
2 'string 5'
1 ARRAY(0x...)
0 'string 6'
1 'string 7'
2 'Top_key_2'
我正在尝试获取每个套件的两个数组的大小。在上面 例如,Second_Key_2有两个数组,第0个是3号。
my $count1 = $#{$HoHoA{$top_key}{$second_key}[0]}+1;
my $count2 = $#{$HoHoA{$top_key}{$second_key}[1]}+1;
和
my $count1 = @{$HoHoA{$group}{$suite}[0]};
my $count2 = @{$HoHoA{$group}{$suite}[1]};
我收到如下错误消息: 在使用“strict refs”时,不能使用字符串(“string 3”)作为ARRAY引用
为什么我收到错误消息,我该怎么做?
答案 0 :(得分:1)
$HoHoA{$group}{$suite}[0]
不是arrayref;它是一个字符串,因此是错误。也许您需要调试构建数据结构的代码。
答案 1 :(得分:1)
在调试器下运行它,并使用x
命令以递归方式转储数据结构或指向其中。
您可以使用Dumpvalue
模块以编程方式执行此操作,但它不太方便。
我希望人们不要一直以为我把perllol
写成了一个笑话。 ☺
答案 2 :(得分:0)
看起来你走得太深了一层。 下面的代码可以为您提供您想要的内容
my $count1 = @{$HoHoA{$group}{$suite}};
您可能还想使用Data :: Dumper来查看 对象的结构,以确保您正在处理写入数据格式。 使用Data :: Dumper; 打印翻斗车($ HoHoA);