Si tu mets tes différents mots disgnostics d'erreur dans un tableau, par ex:
my @error_msg = qw /erreur error fatal failed coredump/;
tu n'as pas trop d'autre choix que de tester chacun des éléments du tableau sur chaque ligne. Par exemple quelque chose comme cela:
1 2 3 4 5
| while (my $ligne = <$FIC_READ>) {
foreach my $pattern (@error_msg) {
print "erreur sur ligne $.\n" if $ligne =~ /$pattern/;
}
} |
Tu peux aussi faire un grep (positif, pas négatif, pour la raison exposée dans mon post précédent), ça te donnera l'impression de ne pas faire un truc aussi inefficace que deux boucles imbriquées, mais ça ne change pas grand chose à la réalité des choses (en sous-jacent, il y aura bien deux boucles impriquées). Pas testé, mais un truc comme cela devrait marcher à peu près, je pense:
1 2 3
| while (my $ligne = <$FIC_READ>) {
print "erreur sur ligne $.\n" if (grep { $ligne =~ /$_/} @error_msg);
} |
Partager