如何在Perl中获得散列的嵌套键值?
我想迭代一个hash-ref并获取键(如果它们存在的话),但是我想要的键位于hash-ref的第二级。我想能够获取hash-ref的所有第一级键的这个键 例如:如何在Perl中获得散列的嵌套键值?,perl,hash,Perl,Hash,我想迭代一个hash-ref并获取键(如果它们存在的话),但是我想要的键位于hash-ref的第二级。我想能够获取hash-ref的所有第一级键的这个键 例如: my $total = 0; foreach my $student (keys $students) { if ( exists $student->{???}->{points} ) { $total += $student->{points};
my $total = 0;
foreach my $student (keys $students) {
if ( exists $student->{???}->{points} ) {
$total += $student->{points};
}
}
return $total;
我遇到的问题是,我不想“关心”
$student->{???}
的值是什么,只想得到{points}
,因为你把$student
变量和$student
变量混在一起了:
if ( exists $student->{???}->{points} ) {
^^^^^^^^
Should be $students
然而,如果你不关心你的第一级HoH,那么就不要重复它们
只需在上迭代即可:
产出:
42 is the answer
为什么要结束这个问题,这不是调试,而是关于理解perl中的散列循环。只迭代第二级散列有什么错?为什么不:
if(exists$students->{$student}->{points}{
?foreach my$student(key%{$students}){
因为keys%$students
如果您有一个hashref而不是hash…谢谢,我最终为每个$student(keys%$students){if(exists$students->{$student}->{points}{…},作为总和映射()我现在无法理解。我将尝试重构它,因为它是一行程序。还感谢您指出我在使用$student时的错误,现在我了解了如何使用哈希进行循环
42 is the answer