#ouverture du deuxième argument de la commande: les suites d'étiquettes qu'on veut extraire
open my $termino, "$ARGV[1]";
#lecture de tout le fichier termino dans une liste
@patrons=<$termino>;
close $termino;
#suite pos de l'utilisateur
#my $suitedepos="VERB DET NOUN";


#ouverture du fichier d'entrée
open my $entree, "$ARGV[0]";
#initialisation des listes
@pos=();
@token=();


#lecture ligne par ligne 
while (my $ligne=<$entree>) {
#pas besoin de lire la ligne si elle commence par un #, si elle contient deux chiffres séparés par un tiret/ next if= passer à la ligne suivante
	next if $ligne=~m/^#|\^d+-\d+/ ;
#suppression des deux symboles de fin de ligne
	$ligne=~s/\r?\n//g;
#si la ligne n'est pas égale à rien, on fait les traitements
	if ($ligne ne "") {
# découpage de la ligne considérée comme une liste
	my @ligne = split /\t/, $ligne;
#récupération des tokens qui sont dans la quatrième colonne
	push @pos, $ligne[3];
#récupération des tokens qui sont dans la deuxième colonne
	push @token, $ligne[1];
#my $rep=<STDIN>;
	}
#si on tombe sur la fin du paragraphe
	else {
	#print "je traite les listes\n";
	#print "@pos\n";
	#print "@token\n";	
	
	#pour chaque patron vérifie si il existe des correspondances à l'intérieur des sous-listes
	foreach my $suitedepos (@patrons) {
		#compteur d'espace
		$long=0;
		#enlève retours à la ligne
		$suitedepos=~s/\r?\n//g;
		#s'assurer de la correspondance entre patrons de l'utilisateur et les pos du texte
		#pour calculer la longueur du patron en calculant le nb d'espace.
		while ($suitedepos=~/ /g) {$long++}
		$i=0;
		foreach my $element (@pos) {
			#calcule l'indice de l'élément, si il y a une correspondance on veut garder en mémoire l'indice, on veut extraire au même endroit le token
			$i++;
			#i=si on trouve une correspondance entre le premier pos donné par l'utilisateur et les données, on cherche sur toute la longueur
			if ($suitedepos =~/^$element/) {
			#print "presence de $element, je cherche toute la séquence de $i et ensuite sur $long caractères\n";
			$suite="";
			#reconstruction de la liste des pos en fonction de la longueur 
			for ($j=$i-1;$j<=$long+$i-1;$j++)
			{$suite=$suite.$pos[$j]." "}
			#print "==>$suite<==\n";
			#print "==>$suitedepos<==\n";
			if ($suite=~/$suitedepos/) {
				
				#print "MATCH de $i à $j\n";
				#print "@token[$i-1..$j-1]\n";
				$extract = join(" ", @token[$i-1..$j-1]);
				#mettre en minuscule les extractions
				$dict{lc($extract)}++;
				print "$extract\n";
					}
				}
			}
		}
	#my $rep=<STDIN>;
	
	#vide les listes pour refaire les mêmes traitements sur la suite
	@pos=();
	@token=();
	}
}
