Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dereferencing Perl hashrefs

Using Text::Ngram I have

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

which doesn't work (Scalar found where operator expected). I think this is a combination of not knowing what I'm doing (still not very good with Perl) and being confused about what exactly I'm getting as output from Text::Ngram. Help? I just want to look at the generated n-grams:

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

Edit: Stupid error on my part, thanks everyone.

like image 541
Charles Avatar asked Jul 22 '11 18:07

Charles


Video Answer


1 Answers

Use curly braces to dereference the hash reference:

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

And you probably want to use <=> for numerical sorting instead of the ASCII-betical sorting cmp.

like image 107
Zaid Avatar answered Sep 20 '22 23:09

Zaid