【发布时间】:2014-07-27 03:51:29
【问题描述】:
我试图了解为什么在一种情况下会出现 HASH ref 错误,而在另一种情况下却没有。错误:在 ./a.pl 第 351 行使用“strict refs”时,不能使用字符串 ("1") 作为 HASH ref。错误行由 指示
问题代码:
my $count = 0;
my %sort_total;
foreach my $host (keys %ips_per_host) {
foreach my $ip (keys %{$ips_per_host{$host}}) {
$sort_total{$count} = $ips_per_host{$host}{$ip};
$sort_total{$count}{'host'} = $host; <--
$sort_total{$count}{'ip'} = $ip;
$count++;
}
}
foreach $count (sort {$sort_total{$a} cmp $sort_total{$b} }keys %sort_total){
[...]
}
但是,如果我创建另一个哈希并使用它,则不会出错。
my $count = 0;
my %sort_total;
my %sort_hosts;
foreach my $host (keys %ips_per_host) {
foreach my $ip (keys %{$ips_per_host{$host}}) {
$sort_total{$count} = $ips_per_host{$host}{$ip};
$sort_hosts{$count}{'host'} = $host;
$sort_hosts{$count}{'ip'} = $ip;
$count++;
}
}
foreach $count (sort {$sort_total{$a} cmp $sort_total{$b} }keys %sort_total){
[...]
}
谁能帮我理解为什么会这样?我已经多次遇到它,我真的很想把头绕在它周围。
【问题讨论】:
标签: perl