no save
Assistance
Achat
News

Forum | programmation
Komen faire un tableau d'un fichier en Perl?
lami20j, le mar. 16 janv. 2007 à 21:38:31
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";

Précédentlami20j
janv. 07
karinn
janv. 07
Suivant
REPONSES
lami20j
janv. 07
lami20j
janv. 07
karinn
janv. 07
lami20j
janv. 07
lami20j
janv. 07
karinn
janv. 07
karinn
janv. 07
lami20j
janv. 07
karinn
janv. 07
karinn
janv. 07
Version Web
Réalisé par RedShift
no save