[Perl] Cherc des patterns dans +ieurs fichier

[Fermé]
Signaler
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
Salut,
Ultra débutant en Perl, je tente de faire un petit script de recherche de patterns/messages dans des fichiers C.

voici un extrait de mon script:
@files contient tous les fichiers C à scanner (path complet)
@msg_id contient une liste de messages, séparés par un saut de ligne
(genre
MON_MESSAGE_1
MON_MESSAGE_2
etc...),
y en a 2-3000 à peu près.

Et il faut que j'associe un msg_id avec un fichier C.
Donc faut que je parcours chaque fichier C pour chaque msg_id...

Mon algo est surement foireux, je débute...

Mes tableaux sont ok, le seul souci, c'est que le print qui affiche qqchose lorsque la recherche a trouvé un des msg ne marche pas...

# Run msg_id search through each file
foreach $file (@files)
{
# Parse C file to find MSG_ID
print "\n\t$file";

foreach $msg_id (@msg_id)
{
open (SRC_FILE, "$file");
while(<SRC_FILE>)
{
if(/$msg_id/)
{
# J'ai trouvé !
print "\n\t$msg_id --> $file";
}
}
close (SRC_FILE);
}
}

Merci pour votre aide !

Benoit

22 réponses

Au final, j'ai un script qui marche super !
Merci

Concernant les performances, c étrange.
En utilisant ton algo: j'ouvre le fichier, et je le parcours avec la liste de messages, c'est très lent.
En utilisant mon algo: pour chaque message de la liste, j'ouvre le fichier et je le parcours pour chercher 1 message à chaque fois.

Mon algo devrait etre plus lent, pourtant il va plus vite (1seconde par fichier contre3-4 sec)...c étrange.

il ne me reste plus qu'à afficher les messages qui n'ont pas été trouvé et le tour est joué !

merci pour ton aide précieuse !
benoit
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 562
Re,

Mon algo devrait etre plus lent, pourtant il va plus vite (1seconde par fichier contre3-4 sec)...c étrange.

Peut être pas :-)
Comme je te l'ai dit dans mon code je stocke les infos dans un hash avant de les afficher, pendant que tu le fait directement.

Le plus important c'est que ça marche

Je vais faire un test chez moi ce soir et je te donnerai les résultats.
Le test sera fait sur 1000 fichiers (1000 lignes chacun) et 1000 messages.