解引用Perl哈希引用

6

我使用Text::Ngram库。

my $c = ngram_counts($text, 3);
my %ct = %($c);

出现错误信息(找到标量,期望运算符)。我认为这是我不熟悉 Perl 和对 Text::Ngram 的输出结果感到困惑的综合表现。请帮忙?我只想查看生成的 n-grams:

my @keys = sort {$ct{$a} cmp $ct{$b} } keys %ct;
foreach my $k (@keys) {
    print "$k: $ct{$k}\n"
}

编辑:这是我的一个愚蠢错误,谢谢大家。

4个回答

16

使用花括号来引用哈希引用:

my %ct = %{ $ct };  # %$ct would also work

你可能想使用<=>进行数字排序,而不是ASCII-betical排序cmp


7
使用花括号:
my %ct = %{ $c };

3

不需要将副本复制到另一个哈希表中,只需使用引用即可。

my $c = ngram_counts($text, 3);

my @keys = sort {$c->{$a} <=> $c->{$b} } keys %$c;
foreach my $k (@keys) {
    print "$k: $c->{$k}\n"
}

查看http://perlmonks.org/?node=References+quick+reference了解一些易记的处理引用的规则。


0
你想试试这个吗?
my $c = ngram_counts({}, $text, 3);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接