我正在尝试使用像这样的散列哈希 -
#!/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
不存在时,相同的代码有效。有人可以告诉我为什么吗?
答案 0 :(得分:1)
好吧,因为我在5.8.7中严格尝试了这个并且它有效,我不禁想到你实际运行的代码在某种程度上是不正确的,这不是和“它没有严格工作”意味着它没死。 Perl只是让你做任何你想做的事情,让你自己解决问题。
所以答案是
1)代码适用于(对于玩具代码)5.8
2)“它没有严格工作”是Perl新手中的一个常见语句,直到我看到一些试图将哈希引用字符串化的代码,我不能说任何不同的东西。
3)为什么它“无严格地工作”是你对这个模式的适应程度,实际代码是如何格式错误的组合,以及Perl允许你在严格关闭的情况下无数次拍摄自己的事实 - 有时你会认为它有效。
4)事实上做的工作没有严格,他们的意思是。这就是关闭限制(no strict 'refs';
)意味着你故意做一个chancy操作。