在perl中散列哈希值

时间:2010-06-29 15:39:26

标签: 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不存在时,相同的代码有效。有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:1)

好吧,因为我在5.8.7中严格尝试了这个并且它有效,我不禁想到你实际运行的代码在某种程度上是不正确的,这不是和“它没有严格工作”意味着它没死。 Perl只是让你做任何你想做的事情,让你自己解决问题。

所以答案是

1)代码适用于(对于玩具代码)5.8

2)“它没有严格工作”是Perl新手中的一个常见语句,直到我看到一些试图将哈希引用字符串化的代码,我不能说任何不同的东西。

3)为什么它“无严格地工作”是你对这个模式的适应程度,实际代码是如何格式错误的组合,以及Perl允许你在严格关闭的情况下无数次拍摄自己的事实 - 有时你会认为它有效。

4)事实上的工作没有严格,他们的意思是。这就是关闭限制(no strict 'refs';)意味着你故意做一个chancy操作。