Bonjour,
je souhaite compter les balises dans un texte annoté de cette façon:
La mort du <func.ind> <kind> prince </kind> </func.ind> <pers.ind correction="Napoléon"> <name> Napol on </name> </pers.ind> a pour
conséquence, aux terms de la loi
d'exil, de bannir de 'A rance son second
fils, le <func.ind correction="prince"> = <kind> rince </kind> </func.ind> <pers.ind> <name.first> Louis, </name.first> </pers.ind> héritier de son
frère <pers.ind> <name.first> Victor, </name.first> </pers.ind> maintenant chef de la
famille.
Sachant que je ne veux compter que les balises du niveau supérieur, et non celles qui se trouvent déjà à l'intérieur d'une autre balise (ce qui nous en fait 5, dans l'exemple).
Voici mon code:
use locale;
use strict;
my $patternouvrant="<.*?>";
my $patternfermant="<\/.*?>";
my $compteurouvrant=0;
my $compteurfermant=0;
my $compteurentites=0;
open(TXT,"<","toto.ne");
while (my $ligne =<TXT>)
{
if($ligne=~/$patternouvrant/)
{
$compteurouvrant++;
}
if($ligne=~/$patternfermant/)
{
$compteurfermant++;
}
if ($compteurouvrant == $compteurfermant)
{
$compteurentites++;
$compteurouvrant=0;
$compteurfermant=0;
}
}
print $compteurentites;
close(TXT)
L'idée est de compter chaque balise ouvrante d'un coté, chaque fermante d'un autre, et lorsque les 2 compteurs sont égaux (donc qu'on a parcouru tout un groupe de balises), incrémenter un 3e compteur. Seulement là, il me compte toutes les balises à chaque fois.
Help !!
Merci d'avance.
Partager