Bonsoir.
Comment peut-on tester si une variable contient une expression régulière bien formée (c'est à dire ne produisant pas d'erreur à l'évaluation) ?
Je passe une regex en argument de ligne de commande. Tout marche bien mais je voudrais pouvoir gérer les erreurs moi-même quand l'expression n'est pas valide (éviter l'arrêt du script, afficher un message à moi...).
Voilà le code (simplifié).Pour le test j'ai essayé des solutions du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #!/usr/bin/perl -w use strict; die "Aaargs!!\n" if (! defined $ARGV[1]) ; my $path = shift; my $regex = shift; opendir DIR, $path or die "Can't open $path : $!\n"; my @filelist = map {$path . '/' . $_} grep { -f "$path/$_" && /$regex/} readdir DIR; #map {print "$_\n"} @filelist;mais j'obtiens systématiquement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ... if (!defined(eval('$regex =~ '."/$regex/"))); ... if (!defined(eval("/$regex/")));D'où la question: comment évaluer la syntaxe d'une regex ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Use of uninitialized value in pattern match (m//) at (eval 1) line 1.
Merci d'avance.
Partager