Bonjour à tous,
Me revoilà avec une nouvelle question sur les fichiers et leurs manipulations.
J'ai deux fichiers A et B. Le Fichier A se décompose comme suit :
Le Fichier B contient plusieurs lignes diverses et variées.Champ1;Champ2;Champ3;Champ4;Champ5
Ce que je veux faire, c'est de parcourir B en regardant si le Champ2 (A) existe, si oui, je concatène, en début de la ligne B le Champ1 et en fin de ligne le Champ5 et je redirrige dans un fichier C.
Celà j'y arrive sans problème.
Là ou le bat blaisse, c'est lorsque je dit "Si je ne trouve pas le Champ2 dans A alors je crée une ligne contenant Champ1XYZChamp2, où XYZ est une chaine composée de 232 espaces que je redirrige dans le Fichier C, ET je reprend la ligne de B en cours de lecture avec Champ1="00000" et Champ5="XXXXXXXXXXX" que je redirrige dans le Fichier C.
Voici le code. Je débute en Perl, ne m'en veuillez donc pas trop si le code vous semble "pourrit".
Si vous pouviez m'aider.
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 $TexteRecup=""; $Var=0; open (T2DIRFile,"Fichier_B") or die "Impossible d'ouvrir le fichier T2Dir\n"; open (DEST2, ">Fichier_C") or die "Impossible d'ouvrir le fichier de sortie\n"; for($i=0;$i<233;$i++) { $Space = $Space." "; } while ($LigneT2DIR = <T2DIRFile>) { open (DEST1, "Fichier_A"); while( $LigneDEST=<DEST1> ) { my @DEST= split(/;/, $LigneDEST); $ABE = $DEST[5]; $BANK = $DEST[0]; my $recherche = $DEST[1]; if( $LigneT2DIR =~ /$recherche/ ) { $Var =1; last; } } if ($Var == 1) { $LigneT2DIR =~ s/\n//g; $TexteRecup = $BANK.$LigneT2DIR.$ABE; print DEST2 $TexteRecup; $Var = 0; } else { $LigneT2DIR =~ s/\n//g; $TexteRecup = "00000".$LigneT2DIR."XXXXXXXXXXX\n"; $TexteABE = $BANK.$Space.$ABE."\n"; print DEST2 $TexteRecup; print DEST2 $TexteABE; } close(DEST1); $TexteRecup=""; $TexteABE=""; } close(T2DIRFile);
Merci d'avance.
Partager