Bonjour,

J'aimerais trier mon tableau en fonction de ses valeurs (qui sont numériques) et que ce soit décroissant et non croissant.

J'arrive facilement à le trier en fonction de ses clés en utilisant sort.
Le problème est que j'ai plusieurs valeurs identiques. Comment pourrais-je faire?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
foreach my $key (sort keys %TagsDifferents)
{
        print $key."\t\t nb = ".$TagsDifferents{$key}."\n";
        print $OutFile ($key."\t\t nb = ".$TagsDifferents{$key}."\n");
}
 
my @Tri = sort values %TagsDifferents;
 
foreach (@Tri)
{
        print $_."\n";
}
J'obtiens

PCR_primers nb = 3
collected_by nb = 3
collection_date nb = 3
db_xref nb = 4
isolate nb = 3
map nb = 3
mol_type nb = 4
note nb = 2
organism nb = 4
strain nb = 1


1
2
3
3
3
3
3
4
4
4

Comment pourrais-je faire afin d'avoir les clés associées à ces valeurs triées ainsi que pour avoir un tri croissant?


Merci,

Jasmine,











ca va, j'ai trouvé la solution.




Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
my @fields = sort { $TagsDifferents{$a} <=> $TagsDifferents{$b} } keys %TagsDifferents;
@fields = reverse(@fields);
 
foreach (@fields)
{
        print $_."\t\t".$TagsDifferents{$_}."\n";
 
}
my @fields = sort { $TagsDifferents{$a} <=> $TagsDifferents{$b} } keys %TagsDifferents;
@fields = reverse(@fields);

foreach (@fields)
{
print $_."\t\t".$TagsDifferents{$_}."\n";

}
Au cas où ça pourrait aider quelqu'un ayant un problème similaire.



Jasmine,