Chercher tous les mots contenant une lettre redoublée

  1. L'utilisateur saisit une chaine au clavier.
  2. Le script doit afficher : Dans la ligne numéro .. , la lettre .. est redoublée dans le mot ...
  3. Conseil : pensez à utiliser le métacaractère d'ancrage \b, les variables de capture ainsi que $&

    #!/usr/bin/perl
    
    open(FICHIERENTREE, "thepartisan.txt"); 
    my $compteurlignes=0;
    while (my $ligne=<FICHIERENTREE>) { 	
    	#On incrémente le compteur 	
    	++$compteurlignes; 	
    	chomp $ligne; 	
    	#On remplace les caractères inutiles par rien 	
    	$ligne=~s/[,.;:!?()"«»-]//g; 	my @mots=split(/ /,$ligne);
    
    	foreach $mot (@mots) { 		
    		#On met chaque caractère contenu dans la variable $mot dans le tableau @lettres 		
    		my @lettres=split(//,$mot); 		
    		#On prend l'indice du dernier élément du tableau @lettres, on lui ajoute 1 et on affecte le résultat à la variable $longueur 		
    		$longueur=$#lettres+1; 		
    		#On crée une boucle avec une variable $i comme compteur et qui est initialisé à 1 		
    		#On incrémente à chaque passage 
    
    		for (my $i=1;$i<$longueur;$i++) { 			
    			#Si l'élément $i du tableau @lettres est égal à l'élément $i+1 du tableau @lettres, on exécute le bloc d'instructions 			
    			if ($lettres[$i] eq $lettres[$i+1]) { 				
    				#On affecte à la variable $lettre l'élément $i du tableau @lettres 				$lettre=$lettres[$i]; 			
    				print "Dans la ligne numero \033[1;34;40m",$compteurlignes,"\033[00m la lettre\033[1;34;40m ",$lettre,"\033[00m est redoublee dans le mot \033[1;34;40m",$mot,"\033[00m.\n"; 
    			} 		
    		} 	
    	}
    }
    close(FICHIERENTREE);
    

    Image 17



Beliao julie 2010-06-07