簡體   English   中英

Perl中的哈希值哈希

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM