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.