#Imprimer le texte d'un poème sélectionné par un fragment de son titre


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

sub printDoc($$){ #Document, fragment de titre
 	my ($doc, $frag) = @_;
 	
 	my @listDivs = $doc->getDocumentElement()->getElementsByTagName("div");
 	foreach my $div ( @listDivs ){
 	 	my ($head) = $div->getElementsByTagName("head");
 	 	my $titre = $head->getFirstChild()->getData();
 	 	if( $titre =~ m/$frag/ ){
 	 		printTitre($titre);
 			printDiv($div);
 			return;
 		}
 	}
    print("Je n'ai pas trouv\x{00E9} de titre contenant '$frag'\n");
}#printDoc 	
 	
sub printDiv($){ # objet "div"
 	my ($div) = @_;
 
 	my ($par) = $div->getElementsByTagName("p");
 	my @cont = $par->getChildNodes();
 	foreach my $frag ( @cont ){
 		my $indic = $frag->getNodeName();
 		if( $indic eq 'lb' ||$indic eq 'pb'){
 			printFinLigne();
 		}elsif( $indic eq '#text' ){ # c'est du texte
 			my $chn = $frag->getData();
 			$chn =~ s/^\s*(\S*)/$1/; # supprime un saut de ligne initial
 			print( $chn );
 		}else{
 		  # hi, ne rien faire
 		}
 	}
}#printDiv 	
 	
sub printTitre($){ # arg. chaine
	my ($txt) = @_;
	
 	print("***$txt***\n")
}#printTitre
 
sub printFinLigne(){
	print("\n");
}


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

lecture($ARGV[0], $ARGV[1]);