Bonjour,
Le script qui fonctionne mais il a un message d'erreur :
Use of uninitialized value in concatenation (.) or string at xxxl line 57, <> line 1.
Use of uninitialized value in addition (+) at xxx line 70, <> line 7.
voiçi ma ligne 57
print "M: $hash{$id}{'M'}\tI: $hash{$id}{'I'}\tH: $hash{$id}{'H'}\tD: $hash{$id}{'D'}\n";#verif
et ligne 70
$hash{$_}{'indel'} = $hash{$_}{'I'} + $hash{$_}{'D'};
Je comprend que c'est parce que mes variables sont vides, mais j'ai bien fait le test si ma variable est définie
je fais référence un post antérieur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if ( $res[$i+1] ) {# vrai si $res[$i+1] est indéfini ou si $res[$i+1] est faux ... }
par exemple pour b 1H98M2H, j'ai pas de valeur pour I et D
M: 98 I: H: 3 D:
-DATA-
b 1H98M2H
c 1H100M
d 63M5D37M1H
f 1H68M3D31M1H
g 1H75M1I24M
h 1H38M1I60M1H
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
51
52
53
54
55
56
57 #!/usr/bin/perl use strict; use warnings; my %hash; my $id; while( my $ligne = <> ) { chomp $ligne; if($ligne =~ /(.+)\t(.+)$/){ $id=$1; my $mots=$2; $hash{$id}{'code_mots'} = $mots; my @res = $hash{$id}{'code_mots'} =~ /(\d+)([a-z]+)/gi; my %comptage; my $nb_M; my $nb_I; my $nb_H; my $nb_D; for ( my $i = 0; $i < scalar(@res) -1; $i = $i +2 ) { if ( $res[$i+1] ) { $comptage{$res[$i+1]} += $res[$i]; if( $res[$i+1] eq "M"){ $hash{$id}{'M'} = $comptage{$res[$i+1]}; $nb_M += $comptage{$res[$i+1]}; } if( $res[$i+1] eq "I"){ $hash{$id}{'I'} = $comptage{$res[$i+1]} ; $nb_I += $comptage{$res[$i+1]}; } if( $res[$i+1] eq "H"){ $hash{$id}{'H'} = $comptage{$res[$i+1]} ; $nb_H += $comptage{$res[$i+1]}; } if( $res[$i+1] eq "D"){ $hash{$id}{'D'} = $comptage{$res[$i+1]} ; $nb_D += $comptage{$res[$i+1]}; } } } print "M: $hash{$id}{'M'}\tI: $hash{$id}{'I'}\tH: $hash{$id}{'H'}\tD: $hash{$id}{'D'}\n"; } } foreach ( sort keys %hash ) { $hash{$_}{'del'} = $hash{$_}{'I'} + $hash{$_}{'D'}; }
Partager