Alors voila j'ai de gros pb pour sorter une hash.......
Le code original est le suivant.....
Le truc c'est qu'il fonctionne sur certaine de nos machines.... et pas sur d'autre.... la array resultante n'est pas dans l'odre !!!! La machine sur laquelle ca ne fonctionn pas presente une version de perl 5.8.3... alors qu'une autre sur laquelle ca fonctionne presente la version 5.8.5....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 my $each_block = {}; my $block = (); my $i = 0; while (@$text) { my $line = shift(@$text); my $isLast = 1 if scalar(@$text) == 0; if ($line !~ m/^\n$/ && !$isLast) { push(@$block,$line); } else { $each_block->{$i} = $block; $block = (); $i++; } } # Treat block by block. my %global_seenids = (); my $nb_block_with_seq = 0; my $info = {}; my $seqlist = []; my $seqobj = undef; my ($PP_cons,$RF) = ("",""); my @sorted = sort { $each_block->{$a} <=> $each_block->{$b} } keys %$each_block;
La facon de resoudre mon probleme est la suivante :
Autre point, pour tester d'ou venais l'erreur j'ai teste avec une version interactive de Perl different petit morceau de code et je suis tombe sur des choses completement incomprehensible !!!....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 my @sorted = (); while (my ($key, $value) = each( %$each_block)){ push (@sorted,$key); } @sorted = sort { $a <=> $b } @sorted;
Alors j'ai ca :
Est-ce que quelqu'un a une explication car je deteste ne pas comprendre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 PERL> foreach $a (1..12) { $h{$a} = 1 } PERL> x sort keys %h $VAR1 = '1'; $VAR2 = '10'; $VAR3 = '11'; $VAR4 = '12'; $VAR5 = '2'; $VAR6 = '3'; $VAR7 = '4'; $VAR8 = '5'; $VAR9 = '6'; $VAR10 = '7'; $VAR11 = '8'; $VAR12 = '9'; PERL> x sort { $h{$a} cmp $h{$b} } keys %h $VAR1 = '6'; $VAR2 = '11'; $VAR3 = '3'; $VAR4 = '7'; $VAR5 = '9'; $VAR6 = '12'; $VAR7 = '2'; $VAR8 = '8'; $VAR9 = '1'; $VAR10 = '4'; $VAR11 = '10'; $VAR12 = '5'; PERL> x sort { $h{$b} cmp $h{$a} } keys %h $VAR1 = '6'; $VAR2 = '11'; $VAR3 = '3'; $VAR4 = '7'; $VAR5 = '9'; $VAR6 = '12'; $VAR7 = '2'; $VAR8 = '8'; $VAR9 = '1'; $VAR10 = '4'; $VAR11 = '10'; $VAR12 = '5';.
J'ai peut etre un probleme avec mes references a la hash ...
Partager