#!/usr/bin/perl
<<DOC;
auteur: Zhuang QI
usage: perl BAO3.pl [fichier_en_entrée] [fichiers_des_patrons]
DOC

use strict;
use warnings;
binmode(STDOUT, ":encoding(UTF-8)");
#--------------------------------------
use Timer::Simple;
my $t = Timer::Simple->new();
$t->start;
#---------------------------------------
open IN, "<:encoding(utf-8)",$ARGV[0];
open POS, "<:encoding(utf-8)",$ARGV[1];
open OUT, ">:encoding(utf-8)","patrons_UD.txt";
#---------------------------------------
my @tokens=();
my @liste_pos=();
#enregistrer des tokens et des pos dans deux listes également longues
while (my $ligne = <IN>){
	if ($ligne =~ /^([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([^\t]*)$/){
		push @tokens,$2;
		push @liste_pos,$4;
	}
}
close IN;
#---------------------------------------
while (my $patron=<POS>){	
	$patron=~s/\r?\n//;
	print "recheche des patrons $patron\n";
	print OUT "$patron\n";
	print OUT"-------------------------------\n";	
	my %dict=();
	my @pos_cherches=split(/\t/,$patron);
	my $len_patrons=@pos_cherches;
	my $i=0;
	foreach my $pos(@liste_pos){
		if ($pos eq $pos_cherches[0]){
			#my @pos_test=@liste_pos[$i..$i+$len_patrons-1];
			#print "@pos_test\n";
			my $patron_test=join("\t", @liste_pos[$i..$i+$len_patrons-1]);
			if ($patron_test eq $patron){
				my $extract=join("\t",@tokens[$i..$i+$len_patrons-1]);
				#print "$extract\n";
				$dict{lc($extract)}++;
				print OUT "$extract\n";
				
			}
		}
		
		$i++;
		
		if($i==$#liste_pos+1-$len_patrons){last;}
	}
	if (!%dict){print "non patrons trouvés\n";}
	print OUT "-------------------------------------------\n";
}

close POS;
close OUT;
print "time so far: ", $t->elapsed, " seconds\n";