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:
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";
Ca ne marche pas !!!

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 !