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.

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, &regEx_pushTab($_,"date_jourmois"));
 
}
close (READ);
 
sub regEx_pushTab{
      my $string = $_[0];
      my $regex = $_[1];
 
      my @temp_date = ( $_ =~ /<$regex=(.+?)>/g );
 
     return @temp_date;
}
 
[...]
En gros, ce script fait en 10 lignes ce que je pourrai faire en
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 :
Il ne faut pas appeler une fonction dans une opération
telle que push?
Ma regex dans ma fonction est mal écrite et devrait plutôt
ressembler à quelque chose comme :
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 );
}
voire ...
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 );
}
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 ?

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