[问题]请问这段perl代码哪有问题?

软件和网站开发以及相关技术探讨
回复
enzo1985
帖子: 25
注册时间: 2006-05-14 13:31

[问题]请问这段perl代码哪有问题?

#1

帖子 enzo1985 » 2008-02-01 14:23

代码: 全选

#!/usr/bin/perl

my %sue = (
	"name" => "sue",
	age => 45,
);
%john = (
              "name" => "john",
	age => 20,
	);
%peggy = (
	"name" => "peggy",
	age => 16,
	);
#$sue{children} = [\%john, \%peggy];
@son = [\%john, \%peggy];
$sue{children} = \@son;
print "hello  $sue{children}->[1]->{age}";
为什么得不到我想要的值,怎样才能实现打印该值??谢谢
heejun
帖子: 60
注册时间: 2006-05-01 12:29
来自: zju

Re: [问题]请问这段perl代码哪有问题?

#2

帖子 heejun » 2008-02-06 2:03

enzo1985 写了:

代码: 全选

#!/usr/bin/perl

my %sue = (
	"name" => "sue",
	age => 45,
);
%john = (
              "name" => "john",
	age => 20,
	);
%peggy = (
	"name" => "peggy",
	age => 16,
	);
#$sue{children} = [\%john, \%peggy];
@son = [\%john, \%peggy];
$sue{children} = \@son;
print "hello  $sue{children}->[1]->{age}";
为什么得不到我想要的值,怎样才能实现打印该值??谢谢
问题出在这一句

代码: 全选

@son = [\%john, \%peggy];
你在这里多引用了一层,按照你的意思,你想造一个引用数组@son
正确的方法是

代码: 全选

@son = (\%john, \%peggy);
ps:最好加上

代码: 全选

use strict;
use warnings;
heejun
帖子: 60
注册时间: 2006-05-01 12:29
来自: zju

#3

帖子 heejun » 2008-02-06 2:07

或者你直接将匿名数组赋值给hash也是可以的

代码: 全选

#!/usr/bin/perl 
use strict;
use warnings;
my %sue = (
   "name" => "sue",
      age => 45,
      );
my %john = (
      "name" => "john",
       age => 20,
        );
my %peggy = (
     "name" => "peggy",
      age => 16,
   );
#$sue{children} = [\%john, \%peggy]; 
$sue{children} =[\%john, \%peggy];
print "hello  $sue{children}->[1]->{age}";
enzo1985
帖子: 25
注册时间: 2006-05-14 13:31

#4

帖子 enzo1985 » 2008-02-07 0:03

的确是那个地方的问题,非常感谢
回复