#!/usr/bin/perl

###################################################################################
#	Lit le fichier passé en argument de la commande et fait la segmentation en phrases
###################################################################################

open(Fic, $ARGV[0]);

$Out="segmPh_$ARGV[0]";
open(Sortie,">$Out");

my $i=0;			#compteur
@car = (Fic);		#tableau pour les caracteres

#creation du tableau avec les caracteres, lecture du fichier
while(!eof(Fic)) 
{
	$car[$i]=getc(Fic);
	$i++;
}	
close(Fic);

#cloture du tableau
$car[$i]="\0";

#mettre le compteur à zero
$i=0;

#boucle pour la lecture et l'impression du tableau des caracteres
while($car[$i] ne "\0") 
{	
	print Sortie $car[$i];	#imprime le point et décide s'il faut mettre saut de ligne ou pas
	
	if( ($car[$i] eq "\.") && 	  #le caractere courrant est point et
		($car[$i+1] ne "\.") &&   #le caractere suivant n'est pas point et
		($car[$i-1]=~ /[^A-Z]/) &&
		($car[$i-1]=~ /[^0-9]/)	&& #le caractere precedent n'est pas majuscule
		($car[$i+2]=~/[A-Z]/))    
	{	
		print Sortie "\n";     #if tout ça OK, imprime fin de ligne
		$i++;			#pour ne pas imprimer l'espace au début de la ligne
	}
	
	#pour les trois points
	if(($car[$i] eq "\.") &&
	   ($car[$i-1] eq "\.") &&
	   ($car[$i-2] eq "\.")  &&
	   ($car[$i+2]=~/[A-Z]/)) 
	{	
		print Sortie "\n";	#if tout ça OK, imprime fin de ligne
		$i++;		       #pour ne pas imprimer l'espace au début de la ligne
	}
	
	if((($car[$i] eq "!") ||  #pour gérer ! et ? (a cause de XML < >)
		($car[$i] eq "\?")) && 
			($car[$i+2]=~/[A-Z]/) && 
			($car[$i-1] ne "<")  && 
			($car[$i+1] ne ">")) 
	{	
		print Sortie "\n";	#if tout ça OK, imprime fin de ligne
		$i++;		#pour ne pas imprimer l'espace au début de la ligne
	}
	
	$i++;			#incrémenter le compteur
}	

close(Sortie);