Bonjour à tous,
Voici la partie de mon script qui pose problème :
L'erreur vient de la fin :
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
45
46
47
48
49
50 my %hash_result; my $i = 0; while (my $line =<$fh>){ chomp $line; if ( $line =~ m/^.+?\s+\w+\s+versus\s+.+?\s+\w+$/ ){ $hash_result{'Dimer'} = $line; } elsif ($line =~ m/score =\s+(\d+)/){ $hash_result{'Score'} = $1; } elsif ($line =~ m/^[ATCGN]+$/){ $hash_result{'Pattern'} = $line; } elsif ($line =~ m/est. tm =\s+([\d,]+)/){ my $tm = $1; $tm =~ s/,/\./; $hash_result{'Tm'} = $tm; } elsif ($line =~ m/DeltaG 370 degrees/){ $hash_result{'DeltaG'} = $line; } elsif ($line =~ m/DeltaG 370 degrees/){ $hash_result{'DeltaG'} = $line; } elsif ($line =~ m/[|x]+/){ $hash_result{'Pipes'} = $line; } elsif ($line =~ m/[35]'-[A-Z]*-[35]'/){ if ($i == 0){ $hash_result{'Seq1'} = $line; $i = 1; } else { $hash_result{'Seq2'} = $line; push @array_result, \%hash_result ; # dernière ligne de résultat, on vide les variables $i = 0; %hash_result = (); } } } close $fh;
Vu que je vide mon hash pour le cycle suivant, je perds toutes les valeurs. Quand je veux récupérer mes valeurs après la fermeture du fichier, mon @array_result est vide. Je voudrais un hash de array. Comment faire afin de résoudre ce problème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 push @array_result, \%hash_result ; # dernière ligne de résultat, on vide les variables $i = 0; %hash_result = ();
Une solution serait d'incrémenter une variable servant d'indice à @array_result et d'y ajouter successivement les clés correspondantes mais ça ne me parait pas très propre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part print Dumper @array_result;
$VAR1 = {};
$VAR2 = $VAR1;
$VAR3 = $VAR1;
$VAR4 = $VAR1;
$VAR5 = $VAR1;
$VAR6 = $VAR1;
$VAR7 = $VAR1;
$VAR8 = $VAR1;
$VAR9 = $VAR1;
$VAR10 = $VAR1;
Merci pour votre aide.
Partager