免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2369 | 回复: 8
打印 上一主题 下一主题

匿名散列的赋值问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-20 10:51 |只看该作者 |倒序浏览
请问一下,我的代码有没有问题呢>
$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]};
}

[ 本帖最后由 wfnh 于 2008-8-20 11:58 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-08-20 11:56 |只看该作者
@xueke=qw/chinese,math,en/;  里面不该有都好, 用空格

论坛徽章:
0
3 [报告]
发表于 2008-08-20 11:59 |只看该作者
搞错了!不好意思!现在改回来了!!应该不是这个问题吧?!

论坛徽章:
0
4 [报告]
发表于 2008-08-20 12:56 |只看该作者
你到底要什么结构?

论坛徽章:
0
5 [报告]
发表于 2008-08-20 13:31 |只看该作者
引用是标量
所以应该是

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. my @xueke = qw ( chinese math en );
  5. my $all_scores = [ [ 55,66,77],[75,85,90],[78,86,88]];
  6. my $student = {
  7.         "name" => "",
  8.         "grades" => {
  9.                 "chinese" => "",
  10.                 "math" => "",
  11.                 "en" => "",
  12.                 },
  13.         };

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

  18. #print the result

  19. {
  20. local $, = " ";
  21. foreach ( 0..2 ) {
  22.         print @{$student->{"grades"}->{$xueke[$_]}},"\n";
  23.         }
  24.         }
复制代码

[ 本帖最后由 churchmice 于 2008-8-20 15:33 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-08-21 10:45 |只看该作者
那我这里到底是什么意思:@{$all_scores->[$i]}!
有点搞不懂!

论坛徽章:
0
7 [报告]
发表于 2008-08-21 10:57 |只看该作者
$student->{grades}->{$xueke[$i]}=@{$all_scores->[$i]};

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

5 楼已经给你答案啦,你好好看看嘛

论坛徽章:
0
8 [报告]
发表于 2008-08-21 11:02 |只看该作者
你那个 $student 里其实也用不着提前分配好空间的
弄一个空的hash引用,然后往里放就行了

论坛徽章:
0
9 [报告]
发表于 2008-08-21 18:24 |只看该作者

回复 #8 cobrawgl 的帖子

不错
就是所谓的auto vivication(好像是这么拼写的)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP