Alors voila j'ai de gros pb pour sorter une hash.......

Le code original est le suivant.....

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

La facon de resoudre mon probleme est la suivante :

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;
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 !!!....

Alors j'ai ca :

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';
Est-ce que quelqu'un a une explication car je deteste ne pas comprendre .


J'ai peut etre un probleme avec mes references a la hash ...