我决定尝试使用Perl,但我遇到了一种似乎是有效的语言结构,但我无法相信它是真实存在的。因为我猜想这背后有一些理由,所以我决定提出一个问题。
以下是Perl代码:
%data = ('John Paul' => ('Age' => 45), 'Lisa' => 30);
print "\$data{'John Paul'} = $data{'John Paul'}{'Age'}\n";
print "\$data{'Lisa'} = $data{'Lisa'}\n";
我的意图是检查哈希嵌套的工作原理。上面的代码输出:
$data{'John Paul'} =
$data{'Lisa'} =
要使它成为有效的哈希散列,需要:
%data = ('John Paul' => {'Age' => 45}, 'Lisa' => 30);
结果将会是:
$data{'John Paul'} = 45
$data{'Lisa'} = 30
有人知道吗:
- 为什么内部哈希表需要使用
{}
而不是()
,导致非统一性问题? - 当内部哈希表使用
()
而不是{}
时,为什么我没有收到任何错误或警告?这种错误很容易犯。此外,('Age' => 45)
不仅会破坏'John Paul'
的值,也会破坏'Lisa'
的值。我无法想象在包含数千行代码的项目中寻找这类“错误”。
(1, 2, 3)
与(1, (2, 3)
与(((1), ((2, (3)))))
是相同的。它们唯一真正的功能是开始一个列表。 - lordadmirause Data::Dump“pp”; pp%data;
- lordadmira