普通而简单的“新手perl代码不起作用,作者不知道为什么”问题:
sub print_hash {
our %hash;
my @list = sort {$hash{$a} <=> $hash{$b} keys %hash;
foreach my $name (@list) {
printf "$name $hash{$name}";
}
}
错误:
syntax error at ./freq line 27, near "my "
Global symbol "@list" requires explicit package name at ./freq line 27.
BEGIN not safe after errors--compilation aborted at ./freq line 27.
我认为我以某种方式搞砸了我的范围。将our %hash
添加到排序eval根本没有帮助(抛出更多错误),并将其外包给sub也是如此。此代码几乎直接从哈希排序教程中窃取。我真的很感激我的错误解释!
答案 0 :(得分:5)
两个错误:
our %hash; # a semicolon missing
my @list = sort {$hash{$a} <=> $hash{$b}} keys %hash;
^ a curly bracket!
答案 1 :(得分:1)
our %hash
之后你错过了一个分号。