[英]Hash of hashes in perl
我正在嘗試使用像這樣的哈希哈希-
#!/usr/bin/perl -w
use strict;
my %hash = ();
sub hash_populate
{
my $name = "PQR,ABD,XYZ";
my @parts = split(/,/,$name);
my $i = $parts[0];
my $a= $parts[1];
my $b = $parts[2];
$hash{$i} = {"A" =>$a,"B" => $b};
my $c = $hash{$i}{"A"};
print $c;
}
我收到表格錯誤
Can't use string ("HASH(0x16c43c)") as a HASH ref while "strict refs" in use
當沒有use strict
時,相同的代碼也可以工作。 有人可以告訴我為什么嗎?
好吧,因為我在5.8.7中嚴格測試了該代碼,並且可以正常工作,所以我不禁想到您實際上正在運行的代碼是否以某種方式變形,而這種方式並非如此,而“在沒有嚴格條件下就可以正常工作”意味着它沒有死。 Perl可以讓您做任何您想做的事情,並讓您自己解決問題。
所以答案是
1)該代碼適用於5.8的玩具代碼
2)“在沒有嚴格要求的情況下工作”是Perl新手之間的常見說法,在我看到一些試圖對哈希引用進行字符串化處理的代碼之前,我什么都沒說。
3)為什么“不受嚴格限制”起作用,是綜合了您適合該模式的程度,實際代碼的格式錯誤以及Perl允許您在嚴格關閉狀態下無數次射擊自己的事實的結合,並且有時您會認為它有效。
4)某些事情實際上是在沒有嚴格限制的情況下工作的,它們是有目的的。 那就是關閉約束( no strict 'refs';
)是您有目的地進行無償操作的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.