Bonjour à tous,
Je me suis lancé récemment dans le perl.
J'utilise le module Spreadsheet pour insérer des données dans un fichier excel.
Jusque la tout va bien.
J'ai ma boucle d’insertion, et en fait, en fonction du numéro de ligne, si il existe dans ma liste, je lui affecte un format, sinon un autre.
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 #Variables du script no strict 'vars'; for $le ("a".."l", "deb", "fin", "ligne", "chiffre", "args") { ${"$le"} = 0; } $h = 4; $i = 1; $ligne = 3; $args = @ARGV; my @prems = (); my @separe = (); #Je remplis ma colonne, et au passage mon tableau separe for $g (0..$#alpha) { if (${"let_$g"} gt 1) { $deb = $h + ${"pre_$g"}; $fin = $deb + ${"let_$g"} - 1; $worksheet -> merge_range("B$deb:B$fin", "$alpha[$g]", $merge); $separe[$i] = $fin; $i++; } elsif (${"let_$g"} eq 1) { $deb = $h + ${"pre_$g"} - 1; $fin = $deb; $worksheet -> write("$deb", 1, "$alpha[$g]", $gauche); $separe[$i] = $fin; $i++; } } print "voici la liste : @separe";
Jusque la OK, j'affiche mon tableau il est bon :
Mais ensuite lors du test dans une boucle plus lointaine (le test de verif si mon argument est dans le tableau)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 voici la liste : 3 32 44 74 90 100 152 158 161 161 180 186 206 251 256 261 287 294 307 318 325 325 326 331 331
J'ai cette erreur environ 300 fois (nombres de lignes excel)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 for ($j=1,$ligne=3;$j<$args;$j++,$ligne++) { ... if (grep {$_ eq "$ligne"} @separe) { $donnees = $separation; $coin = $angle; } else { $donnees = $data; $coin = $droite; } ... }
Je me doute que c'est tout bête, un truc du style "my" mais je ne trouve pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Use of uninitialized value in string eq at /usr/syno/perl/contacts.pl line 284. (if (grep {$_ eq "$ligne"} @separe) {)
D'autant que si avant mon dernier for je declare ma liste comme ceci ça marche
Merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @separe = (3,32,44,74,90,100,152,158,161,161,180,186,206,251,256,261,287,294,307,318,325,325,326,331,331);
Partager