匿名散列的赋值问题?

匿名散列的赋值问题?

请问一下,我的代码有没有问题呢>
$student=                          //散列
{
name=>'',
grades=>{
             chinese=>'',
             math=>'',
             en=>'',
            },
};
$all_scores=[ [55, 66, 77,],[75, 85, 90],[78, 86, 88] ];//匿名数列
@xueke=qw/chinese math en/;
下面是我的赋值语句,我试了很多方法,都不行,到底那里错了,还望指教:
for($i=0;$i<3;$i++)
{
$student->{grades}->{$xueke[$i]}=@{$all_scores->[$i]};
}

@xueke=qw/chinese,math,en/;  里面不该有都好, 用空格
搞错了!不好意思!现在改回来了!!应该不是这个问题吧?!
你到底要什么结构?
引用是标量
所以应该是

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
my @xueke = qw ( chinese math en );
my $all_scores = [ [ 55,66,77],[75,85,90],[78,86,88]];
my $student = {
        "name" => "",
        "grades" => {
                "chinese" => "",
                "math" => "",
                "en" => "",
                },
        };

foreach ( 0..2 ) {
            $student->{"grades"}->{$xueke[$_]} = $all_scores->[$_];
        #$student->{"grades"}->{$xueke[$_]} = [@{$all_scores->[$_]}]; 这样也是可以的,但是速度慢一点
        }

#print the result

{
local $, = " ";
foreach ( 0..2 ) {
        print @{$student->{"grades"}->{$xueke[$_]}},"\n";
        }
        }

那我这里到底是什么意思:@{$all_scores->[$i]}!
有点搞不懂!
$student->{grades}->{$xueke[$i]}=@{$all_scores->[$i]};

左边是个 scalar,右边是个 array,这样左边得到的是array的长度,而不是 array 里的数据。

5 楼已经给你答案啦,你好好看看嘛
你那个 $student 里其实也用不着提前分配好空间的
弄一个空的hash引用,然后往里放就行了
不错
就是所谓的auto vivication(好像是这么拼写的)