use strict; use locale; use XML::Parser; if ( $#ARGV != 0 ) { die "Usage : ", $0, " fichier_morphalou\n"; } my $parseur = new XML::Parser; $parseur -> setHandlers ( Start => \&balise_ouvrante ); my ( $categorie, $genre, $lemme ); $parseur -> parsefile( $ARGV[0] ); sub balise_ouvrante { my $p = shift @_; my $balise = shift @_; my %attributs; while ( $#_ >= 0 ){ my $cle = shift @_; my $valeur = shift @_; $attributs{$cle} = $valeur; } if ( $balise eq "lexicalEntry" ){ $categorie = $attributs{"grammaticalCategory"}; if ($categorie eq "commonNoun"){ $lemme = $attributs{"lemma"}; $genre = $attributs{"grammaticalGender"}; } } elsif ( $balise eq "inflection" and $categorie eq "commonNoun" ){ print $attributs{"orthography"},"\t",$lemme,"\t", $genre,"\t", $attributs{"grammaticalNumber"},"\n"; } }