从哈希中提取特定元素

时间:2013-09-03 08:21:16

标签: perl hash

my %hash = {
    'student1' => {
        'Name' => 'aaa',
        'Age'  => '20',
        'Subjects' => ['Maths','Science']
    },
    'student2' => {
        'Name' => 'bbb',
        'Age'  => '22',
        'Subjects' => ['English','Science']
    }
}
my $hashRef = \%hash;

如何使用hashref从中提取第二个主题名称?

3 个答案:

答案 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 = ( ... );
相关问题