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:
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:
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:
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 ...