#!/usr/bin/perl	-w	

# méthode Daube

# mode d'emploi du fichier
# fournir le 1r arguement le fichier txt sortie de Cordial
# fichiers cordiale sont en iso
# usage extrait_termesl1.pl listedespatrions.txt > SORTIE-rubrique_ISO-8859-1_patrons.txt

# open du fichier cordiale, TEXTE $ARGV[0] c'est le premier argument
open(TEXTE,"<:encoding(iso-8859-1)",$ARGV[0]);

# Lecture du fichier : on s'arrête quand on rencontre une PONCTUATION
my @TOKENS=();
my @LEMME=();
my @POS=();

while(my $ligne=<TEXTE>){

#s'il pas de pctforte je traite POS et remplie ma liste

	if($ligne !~ /PCTFORTE/) {
		#on traite la ligne et on remplit les 3 listes : TOKENS, LEMME, POS
		# faut transformer un scalar $ligne en UNE liste, tab est séparateur
			#ie $ligne contient qqchose comme ça : "Faiseurs\tfaiseur\tNOM\n"
		$ligne=~s/\r//g;			
		chomp($ligne);   #pour enlever le \n
		my @LISTEARANGER=split(/\t/,$ligne); # @LISTEARANGER contient donc ("Faiseurs","faiseur","NOM")

#pour garder les listes en mémoire
#on alimente les listes avec push - je mets  pas my, je ne veux pas que chaque liste change avec chaque passe
			
		push(@TOKENS, $LISTEARANGER[0]); # faut s'assurer qu'il sont vide
		push(@LEMME, $LISTEARANGER[1]);
		push(@POS, $LISTEARANGER[2]);

				} # fin if
	
	#on vide les listes
	else {
	# TRAITEMENT A FAIRE sur @TOKENS, @POS
	#print "POS contient : @POS \n";
	#print "LEMME contient : @LEMME \n";
	#print "TOKENS contient : @TOKENS \n";
	#print "appuie sur return ";
	#my $retour=<STDIN>;
	#exit;
	&TraiteLaListeDesPos;	#sub programme / procédure

	#	REMISE A ZERO DES LISTES
	@TOKENS=();
	@LEMME=();
	@POS=();

		} # fin else

} #fin while

close(TEXTE);

#================PROCÉDURE==================================

sub TraiteLaListeDesPos {
#c'est ici qu'on va faire le match des POS...
#création de fichier témoin listedesPOS.txt (second argument du programme)
open(TERMES,"<:encoding(iso-8859-1)",$ARGV[1]);

# on compare le scalar ($), à la liste (@), mais on ne peut comparer les choses de même nature, il faut donc transformer la liste en chaîne de caractères.
		my $POStransformeenchaine=join("\#", @POS);
		#print "\$POStransformeenchaine contient :",$POStransformeenchaine,"\n";
		#print "appuie sur return\n";
		#my $reponse=<STDIN>;

# lecture du fichier des patrons
while (my $ligneterme=<TERMES>) {
		# $ligne contient par exemple : NC[A-Z]+#PREP#NC[A-Z]+
		# on veut comparer $POStransformeenchaine et $ligneterme ????
		chomp($ligneterme);		
		my $compteurdematch=0;		
		while ($POStransformeenchaine=~/$ligneterme/g) {
			
		# important : 3 variable prédéfinies de perl sont utilisées ici
		# $&	ce qui est reconnu au moment d'une recherche
		# $`	ce qui est avant ce qui est reconnu
		# $'	ce qui est après ce qui est reconnu

		my $avant=$`;
		my $apres=$';
		#------------------------
		my $nombredediese=0;
		while ($avant=~/\#/g) {
			$nombredediese++;
		}
		#------------------------
		my $nombredediesedanstermetraite=0;
		while ($ligneterme=~/\#/g) {
			$nombredediesedanstermetraite++;
		}
		#---------------------------
		#il ne reste plus qu'à aller chercher les correspondances dans @TOKENS...
		for (my $i=$nombredediese;$i<=$nombredediesedanstermetraite+$nombredediese;$i++){
			print $TOKENS[$i]," ";
		}
		print "\n";

		#$compteurdematch++;
		#print "MATCH $compteurdematch fois \n";
	}
}
close(TERMES);	
}
