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

hashref を使用して、これから 2 番目のサブジェクト名を抽出するにはどうすればよいですか?

4

3 に答える 3

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]
于 2013-09-03T08:34:25.863 に答える
2

の宣言%hashが正しくありません。代わりに次のようにします。

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

括弧の代わりに括弧に注意してください。

次に、2 番目の件名を取得します。

say $hashRef->{student1}{Subjects}[1];
于 2013-09-03T08:32:18.107 に答える
0

サブジェクトは、ハッシュ内のハッシュ内の配列参照です。

$hashRef->{student1}{Subjects}[1]

また、中括弧を使用してハッシュを初期化しないでください。匿名ハッシュが作成されます。丸括弧を使用します。

my %hash = ( ... );
于 2013-09-03T08:31:57.613 に答える