DissociateErroneousFromDecoded.pl 1.57 KB
#!/usr/bin/perl -w

use strict;
use warnings;


if (@ARGV < 3)
{
	print "<rep super ctm> <ordre> <equilibre|backward|backward+1|forward>\n"
}
else
{
	my $RepSuperCTM = $ARGV[0];
	my $Ordre = $ARGV[1];
	my $Sens = $ARGV[2];

	if ($Sens ne "backward" && $Sens ne "forward" && $Sens ne "backward+1" && $Sens ne "equilibre")
	{
		die "mauvais parametre sens : <equilibre|backward|backward+1|forward>\n";
	}

	if ($Sens eq "backward" || $Sens eq "forward" || $Sens eq "backward+1")
	{
		$Ordre++;
	}


	opendir REP, $RepSuperCTM;


	chdir ( $RepSuperCTM );

	my @ListeFichiers = readdir (REP);

	closedir REP;


	my $Compteur=0;


	foreach my $Fic (@ListeFichiers)
	{
		#print "ouverture de $Fic \n";
		open (SUPERCTM, $Fic) or die "Ouverture de $Fic loupée !";


		$Fic=~/(.*?)([0-9]+):([0-9]+).*?([MF]+)#([ST]+).*/;

		my @FicCTM = <SUPERCTM>;

		close SUPERCTM;

		for (my $k=0; $k < @FicCTM; $k++)
		{
			my $LigneSuperCTM=$FicCTM[$k];


			my $ComptMot=0;

			print "$Compteur	0	UNK	$Fic	$LigneSuperCTM";
			if ($Ordre > 1)
			{
				for (my $i=1; $i < $Ordre; $i++)
				{

					if ($Sens eq "equilibre" || $Sens eq "backward" || $Sens eq "backward+1")
					{
						$ComptMot++;

						if ($k - $i >= 0)
						{

							my $Prec=$FicCTM[$k-$i];
							print "$Compteur	$ComptMot	UNK	$Fic	$Prec";
						}
					}

					if ($Sens eq "equilibre" || $Sens eq "forward"  || ($Sens eq "backward+1" && $i == 1))
					{

						$ComptMot++;

						if ($k + $i < @FicCTM)
						{
							my $Suiv=$FicCTM[$k+$i];

							print "$Compteur	$ComptMot	UNK	$Fic	$Suiv";
						}
					}
				}
			}
			$Compteur++;
		}
	}
}