#1 Le 11/05/2007, à 14:30
- Linschn
[Perl] Expression rationnelle de "matchant" pas
Bonjour à tous.
Je travaille sur un projet personnel en perl, et j'effectue une boucle sur les lignes d'un fichier LaTeX.
Dans cette boucle se trouvent les lignes :
print("titleTAG : |${titleTag}| : $t1\n");
if($t1=~m/"$titleTag"/i)
{
print("OOOOOOOOOOOUUUUUUUUUUUUUUUUUUUIIIIIIIIIIIIi\n");
}
Et voici un extrait de ce que ressort mon programme :
titleTAG : |\title{| : \begin{document}
titleTAG : |\title{| : \title{}
titleTAG : |\title{| : \author{KLEIN Edouard}
Vous pouvez constater que $t1 prend la valeur "\title{}", que $titleTag est en permanence à "\title{"et que pourtant ($t1=~m/"$titleTag"/i) reste faux.
Je ne comprend pas. Si quelqu'un a une idée, je suis preneur.
Merci d'avance
Hors ligne
#2 Le 11/05/2007, à 15:14
- Linschn
Re : [Perl] Expression rationnelle de "matchant" pas
Je vais suivre Tim Towtdi, et essayer avec ce module :
http://search.cpan.org/~schubiger/LaTeX-TOM-0.6/lib/LaTeX/TOM.pm
Mais ça m'ennuie de sortir la grosse artillerie pour une petite manipulation...
Hors ligne
#3 Le 11/05/2007, à 21:18
- JoelS
Re : [Perl] Expression rationnelle de "matchant" pas
print("titleTAG : |${titleTag}| : $t1\n"); if($t1=~m/"$titleTag"/i) { print("OOOOOOOOOOOUUUUUUUUUUUUUUUUUUUIIIIIIIIIIIIi\n"); }
A mon humble avis, tu devrais ne pas écrire
m/"$titleTag"/i
mais bien
m/$titleTag/i
L'opérateur d'expression régulière n'a pas besoin de stringifier une variable pour l'interpréter.
Hors ligne
#4 Le 12/05/2007, à 13:27
- Linschn
Re : [Perl] Expression rationnelle de "matchant" pas
Alors quand je fais ça :
#!/usr/bin/perl -w
use strict;
my $t1 = "\\title\{\}";
my $titleTag = "title\{";
print("|${titleTag}| |${t1}|\n");
if($t1 =~ m /$titleTag/)
{
print("OOOOOOOOOOOUUUUUUUUUUUUUUUUUUUIIIIIIIIIIIIi\n");
}
Ca fonctionne. (C'est à dire, j'obtiens mon OOOUUII dans la sortie standard).
En revanche si je remplace la 5ème ligne par
my $titleTag = '\title{';
J'obtiens
|\title{| |\title{}|
Je pense que le probmème vient du fait que l'opérateur d'expression rationnelles interprète \title{ comme étant [Tabulation]itle{.
J'ignore comment lui expliquer qu'il ne faut pas interpréter la variable $titleTag.
Hors ligne