Hello à tous,
Ca toujours fait plaisir de revenir dire bonjour de temps à autre sur le forum Perl.
Terre d'attache, hameau de paix et d'avis éclairés sur cet incroyable
couteau suisse qu'est Perl. Cela me rappelle qu'hier,
j'ai échappé de justesse à une bande errante de programmeurs Python partis
en chasse. ( oui, oui, je vous jure ... )
Mais là n'est pas le débat, je me pose une question au caractère presque "existentiel" ...
Imaginons ce bout de code suivant qui tente
de récupérer une balise du genre <date_mois= xxxxx> dans
un fichier.txt et qui tente de la stocker dans un tableau.
En gros, ce script fait en 10 lignes ce que je pourrai faire en
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 [...] open( READ, "<:encoding(utf8)", "read.txt" ) || die("Erreur"); my @date_jourmois; while (<READ>) { push(@date_jourmois, ®Ex_pushTab($_,"date_jourmois")); } close (READ); sub regEx_pushTab{ my $string = $_[0]; my $regex = $_[1]; my @temp_date = ( $_ =~ /<$regex=(.+?)>/g ); return @temp_date; } [...]
deux dans la "main code", cependant j'aimerais comprendre.
Pourquoi le script, une fois exécuté, me renvoie-t-il une erreur
de compilation de RegEx ?
Est-ce parce que :
1° Il ne faut pas appeler une fonction dans une opération
telle que push?
2° Ma regex dans ma fonction est mal écrite et devrait plutôt
ressembler à quelque chose comme :
voire ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 my $regex = <$regex=(.+?)>; [...] sub regEx_pushTab{ my $regex = $_[0]; my @temp_date = ( $_ =~ /$regex/g ); }
3° Pire encore, la grammaire formelle de mon interpréteur a-t-elle dégénérée à force de RegEx à tour de bras et a-t-elle sombré définitivement dans l'obscurantisme ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sub regEx_pushTab{ my $regex = $_[0]; my @temp_date = ( $_ =~ /\Q$regex/g ); }
Qu'en pensez-vous ?
Y-a-t-il des formulations que Perl accepte à la ""compilation""
(remarquez les guillemets) et qui le font immanquablement planter lors de l'exécution?
Sur cette grande recherche métaphysique et presque linguistique, je vais dormir![]()
Partager