-
#下面有4个例子,但通常最后一个更常用。
-
my %owner1 = (
-
"name" => "Santa Claus",
-
"DOB" => "1882-12-25",
-
);
-
-
my $owner1Ref = %owner1;
-
-
my %owner2 = (
-
"name" => "Mickey Mouse",
-
"DOB" => "1928-11-18",
-
);
-
-
my $owner2Ref = %owner2;
-
-
my @owners = ( $owner1Ref, $owner2Ref );
-
-
my $ownersRef = @owners;
-
-
my %account = (
-
"number" => "12345678",
-
"opened" => "2000-01-01",
-
"owners" => $ownersRef,
- );
-
#显然你不用这么费劲,可以简化为:
-
my %owner1 = (
-
"name" => "Santa Claus",
-
"DOB" => "1882-12-25",
-
);
-
-
my %owner2 = (
-
"name" => "Mickey Mouse",
-
"DOB" => "1928-11-18",
-
);
-
-
my @owners = ( %owner1, %owner2 );
-
-
my %account = (
-
"number" => "12345678",
-
"opened" => "2000-01-01",
-
"owners" => @owners,
- );
-
#也可以使用不同的符号声明匿名数组和哈希表。匿名数组使用方括号,匿名哈希表使用大括号。 这样,返回值就是一个对匿名数据结构的引用。细看一下, 返回的 %accountas 与上面相同:
-
# Braces denote an anonymous hash
-
my $owner1Ref = {
-
"name" => "Santa Claus",
-
"DOB" => "1882-12-25",
-
};
-
-
my $owner2Ref = {
-
"name" => "Mickey Mouse",
-
"DOB" => "1928-11-18",
-
};
-
-
# Square brackets denote an anonymous array
-
my $ownersRef = [ $owner1Ref, $owner2Ref ];
-
-
my %account = (
-
"number" => "12345678",
-
"opened" => "2000-01-01",
-
"owners" => $ownersRef,
- );
-
#或者更短一些(这就是真正用来声明复杂数据结构的形式):
-
my %account = (
-
"number" => "31415926",
-
"opened" => "3000-01-01",
-
"owners" => [
-
{
-
"name" => "Philip Fry",
-
"DOB" => "1974-08-06",
-
},
-
{
-
"name" => "Hubert Farnsworth",
-
"DOB" => "2841-04-09",
-
},
-
],
- );
-
say "$account{owners}[0]{ddddd}";
- say "$account{owners}[1]{aaaa}";
-
say "$account{owners}->[0]->{ddddd}";
say "$account{owners}->[1]->{aaaa}";