#Imprimer Banville depuis Frantext

use strict;
use warnings;
use XML::DOM;

sub printDoc($){ #Document
my ($doc) = @_;
 	
 	my @listDivs = $doc->getDocumentElement()->getElementsByTagName("div");
 	foreach my $div ( @listDivs ){
 		printDiv($div);
 	}
}#printDoc 	
 	
sub printDiv($){ # objet "div"
my ($div) = @_;
 	
 	my ($head) = $div->getElementsByTagName("head");
 	print($head->getFirstChild()->getData());
 	print(" : ".nbVers($div)." vers.\n");
 
}#printDiv 	

sub nbVers($){ # objet "div"
my ($div) = @_;
 	
 	my $k = 0; # le compteur de vers
 	
 	my ($txt) = $div->getElementsByTagName("p");
 	my @enfs = $txt->getChildNodes();
 	foreach my $enf ( @enfs ){
 		if( $enf->getNodeName() eq '#text' ){ # c'est un vers
 			$k++;
 		}
 	}
 	return $k;
}

# Exécution 	
 	
sub lecture ($){# nom de fichier
	my ($fichIn) = @_;
	my $parseur = XML::DOM::Parser->new();
	my $doc = $parseur->parsefile($fichIn);
	
	binmode(STDOUT, ":utf8");
	printDoc ($doc);
}#lecture

lecture($ARGV[0]);