Bonjour,
Je dispose de 2 fichiers:
- le premier contient des identifiants.
ex:
toto
titi
tata
- le deuxième contient des lignes qui contiennent ou non ces identifiants.
ex:
998 titi pour Pierre
6 bidule pour Céline
5 tata pour Paul
79 pipo pour Corinne
Mon but est de faire un scipt PERL qui parse les deux fichiers, afin de produire un troisième fichier, qui ne contiendrait que les lignes du deuxième fichier dont les identifiants sont contenus dans le premier fichier.
ex:
998 titi pour à Pierre
5 tata pour Paul
J'ai écrit ça:
Ca ne marche pas !!!
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 #!/usr/local/bin/perl $file_identifiant = "ident.txt"; $file_liste_obs = "liste.txt"; open( INFO, $file_identifiant ); # Ouvre le fichier @lines_identifiant = <INFO>; # Lit le fichier, et le met dans un tableau close(INFO); # Ferme le fichier open( INFO, $file_liste_obs ); # Ouvre le fichier @lines_liste_obs = <INFO>; # Lit le fichier, et le met dans un tableau close(INFO); # Ferme le fichier # FICHIER DE SORTIE # ----------------- $out = 'OUTPUT.txt'; open( OUT, "> $out" ); foreach $identifiant (@lines_identifiant) { #print OUT "$identifiant"; foreach $liste_obs (@lines_liste_obs) { if ($liste_obs =~ /$identifiant/) { print OUT "$liste_obs"; } } } # FERMETURE FIC SORTIE close OUT; print "\n"; print "\n"; print "... FIN ...\n";
Je pense que le test
if ($liste_obs =~ /$identifiant/)
ne marche pas.
Si je mets
if ($liste_obs =~ /toto/)
ça me trouve bien toutes les lignes où il y a "toto", mais pour moi, les infos à chercher sont des variables ($identifiant / @lines_identifiant) et pas des chaines en dur...
Comment faire ? Je débute en PERL et je dois faire une bêtise grosse comme moi (peut-on mettre des variables dans entre les / / )?
Merci d'avance !
Partager