use strict; use locale; my %freq; while ( my $ligne = ) { chomp $ligne; my ( $forme, $categorie, $lemme ) = split( /\t/, $ligne ); $freq{$lemme}++; } my @liste = sort {$freq{$b} <=> $freq{$a} or ($a cmp $b) } keys %freq; my $rang = 1; print $liste[0], "\t", $rang, "\n"; for ( my $i = 1; $i <= $#liste; $i++ ) { if( $freq{$liste[$i]} < $freq{$liste[$i-1]} ) { $rang++; } print $liste[$i], "\t", $rang, "\n"; }