my %hash = {
'student1' => {
'Name' => 'aaa',
'Age' => '20',
'Subjects' => ['Maths','Science']
},
'student2' => {
'Name' => 'bbb',
'Age' => '22',
'Subjects' => ['English','Science']
}
}
my $hashRef = \%hash;
如何使用hashref从中提取第二个主题名称?
答案 0 :(得分:2)
您对%hash
的声明不正确,请改为:
my %hash = (
'student1' => {
'Name' => 'aaa',
'Age' => '20',
'Subjects' => ['Maths','Science']
},
'student2' => {
'Name' => 'bbb',
'Age' => '22',
'Subjects' => ['English','Science']
}
);
注意parens而不是og brace。
然后获得第二个主题:
say $hashRef->{student1}{Subjects}[1];
答案 1 :(得分:2)
您的代码错误,{}创建了一个hashref,并将其存储在哈希中。你应该这样做:
my %hash = (
'student1' => {
'Name' => 'aaa',
'Age' => '20',
'Subjects' => ['Maths','Science']
},
'student2' => {
'Name' => 'bbb',
'Age' => '22',
'Subjects' => ['English','Science']
}
);
my $hashRef = \%hash;
甚至更好:
my $hashref = {
student1 => { ... },
student2 => { ... },
};
然后您可以访问:
$hashRef->{student2}->{Subjects}[1]
答案 2 :(得分:0)
主题是散列内哈希内的数组引用。
$hashRef->{student1}{Subjects}[1]
另外,不要使用花括号来初始化哈希,它们会创建一个匿名哈希。使用圆括号:
my %hash = ( ... );