Bonjour à tous,
J'ai deux fichiers ABE et ACAD.
ABE est composé de 2 champs de 11 caractères séparés par un ";". Je désire enrichir ACAD en le complétant avec le champ 2 de ABE, si le champ 1 de ABE est présent dans ACAD, en redirigeant dans un un fichier DEST1.
J'ai commencé le programme, mais je n'obtiens rien en sortie et les erreurs suivantes :
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11758.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11759.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11760.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11761.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11762.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11763.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11764.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11765.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11766.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11767.
Filehandle DEST1 opened only for input at ACADD.pl line 42, <ABEFile> line 11768.
Voici le code :
Merci pour votre aide.
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 #!/usr/local/bin/perl use strict; use warnings; my $ABEFile = $ARGV[0]; my $ACADFile = $ARGV[1]; my $VSACAD = $ARGV[2]; my $LigneABE; my $LigneACAD; #Ligne ACAD my $TexteRecup = ""; if(!$ARGV[0] || !$ARGV[1] || !$ARGV[2] ) { die "Utilisation : \n perl acadd.pl nom_fichier_abe nom_fichier_acad nom_fichier_resultat\n"; } else { open (ABEFile,"$ABEFile") or die "Impossible d'ouvrir le fichier ABE\n"; open (ACADFile,"$ACADFile") or die "Impossible d'ouvrir le fichier ACAD\n"; #Fichier ACADD résultant open (DEST1, "$VSACAD") or die "Impossible d'ouvrir le fichier de sortie\n"; # lecture du fichier ACAD ligne par ligne while ($LigneACAD = <ACADFile>) { while( $LigneABE=<ABEFile> ) { my @ABE = split(/;/, $LigneABE); if( $LigneACAD =~ /$ABE[0]/ ) { $TexteRecup = $LigneACAD.$ABE[1]; print DEST1 $TexteRecup; } else { $TexteRecup = $LigneACAD; print DEST1 $TexteRecup; } } } close(ACADFile); close(ABEFile); close(DEST1); }
Partager