Et si tu veux que le fichier soit trier par ordre alphabétique #!/usr/bin/perl
use warnings;use strict;
my (@mots_douteux,@fic);
my %dans_fichier;
my ($fichier,$temp) = ("fichier.txt", "temp.txt");
# ouverture de fichier en lecture
open F_LIRE, "$fichier"
or die "E/S: $!\n";
# ouverture de fichier temporaire en mode écriture
open F_ECRIRE, ">$temp"
or die "E/S: $!\n";
# sauvagarde fichier dans un tableau
# en même temp je fait un chomp sur chaque element
map { chomp } @fic = <F_LIRE>;
# début de programme
print "Saisissez un mot ou une phrase :\n";
chomp(my $texte = <STDIN>);
$texte =~ s/\W/ /g; # remplace signes punctuation avec un espace
my @mot_texte = split /\s+/, $texte; # pour split
# aide mémoire pour trouver les mots
# qui n'existent pas dans le fichier
@dans_fichier{@fic} = ();
# sauvegarde des mots inexistant dans le fichier
foreach (@mot_texte){
push @mots_douteux,$_ unless exists $dans_fichier{$_};
}
print "Le nombre de mots tapés est : ", @mot_texte+0,"\n";
print "Le nombre de mots de fichier est : ",@fic+0,"\n";
print "Il y a ",@mots_douteux+0," qui ne sont pas dans le ficher:\n";
print "@mots_douteux\n";
# traitment de mots trouvés
foreach (@mots_douteux){
print "Voulez-vous ajouter le mot $_ au fichier? O[ui] ou N[on] : ";
chomp(my $rep = <STDIN>);
push @fic,$_ if $rep =~ /o(ui)?/i;
}
# écriture dans le fichier temporaire
# et tri par ordre alphabétique
print F_ECRIRE "$_\n" foreach sort @fic;
close F_LIRE;
close F_ECRIRE;
# sauvegarde de fichier original
rename($fichier,"fichier_original.txt")
or die "E/S : $!";
# le nouveau fichier
rename ($temp,$fichier)
or die "E/S : $!\n";


