(Courriels de diversion: <transi@ranches-forestiers.com> <constitutionnellement@souhaiterez-instruira.com> <grisonnante@reinstallerai-haschich.com> <offrirez@entamerais-localiserons.com> <avoisinerai@meteorites-contrerez.com> <demarquez@rajeuniront-surmenais.com> <portail@barbet-charriee.com> <balisera@humilier-saussaies.com> <urbaniserez@creche-intimions.com> <liquidais@encriers-peseras.com> )


Salut,

pour bouger mes fichiers en évitant ces problèmes d'accents et de caractères bizarres, j'ai fais un script perl qui remplace tous les accents par leur lettre noin accentuée ("é" par "e"), et les espaces par un tiret.

Mon script fonctionne correctement, sauf qu'il faut le lancer plusieurs fois pour qu'il soit vraiment récursif.

N'ayant pas pris le temps de m'occuper de ce dernier point, ça me va :) Le résultat est OK quand le fichier texte de résultat est vide.

Je vous le livre, soyez indulgent avec moi, je ne passe plus ma vie à programmer, même si c'est parfois plaisant.

Ca m'a beaucoup servi, je l'ai bien fait bosser le script!

A+
Maxime



#!c:\perl\bin -w

# Version du 10/10/2005, ajout d'un fichier journal.
# remplace les accents des voyelles accentuées sans différenciation majuscule/minuscule
# remplace ç par c, un espace par _ et gère le tilda.
# fonctionne sous DOS
# sous Linux, Unix, remplacer system ("ren $name $newname"); par system ("cp -v -f $name $newname");


if(@ARGV<1){print "Usage: $0 <path> <outputfile>\n";exit;}

my $outputfilename = $ARGV[1];
unless (open(OUTPUTFILE,"> $outputfilename")) {
print ("\nCan not open output file : $ouputfilename $! \n");
exit();
}


use File::Find;
my $change = 0;
my $path2process = $ARGV[0];
find(\&wanted, $path2process);
close(OUTPUTFILE);
print "\nEnd of program\n";



#################################################"
sub wanted {
print "\n".$File::Find::name.':'.$_ ;
my $name = $_;
my $newname = &replace_chars ($name);
if ($change > 0){
if ($^O eq 'MSWin32'){
system("ren \"".$name."\" ".$newname); # for Windows
print OUTPUTFILE "\n$name=>$newname";
}
else {
system('cp -v -f \"'.$name.'\" '.$newname); # for Linux
}
print "\nRename $name with $newname, $change"; }
} # end of sub function



sub replace_chars{
my ($param) = @_;
my $len = length($param);
print "\n--".$param."-";
for (my $i=0;$i<$len;$i++){
$char = substr($param,$i,1);
$char_ord = ord($char);
if ($char_ord==224 || $char_ord==226 || $char_ord==194 || $char_ord==228 || $char_ord==196 || $char_ord==192 || $char_ord==227 || $char_ord==194){
substr($param,$i,1,'a');
$change = $change + 1;
} elsif ($char_ord==232 || $char_ord==233 || $char_ord==234 || $char_ord==235 || $char_ord==202 || $char_ord==203){
substr($param,$i,1,'e');
$change = $change + 1;
} elsif ($char_ord==238 || $char_ord==239 || $char_ord==236 || $char_ord==207 || $char_ord==206 ){
substr($param,$i,1,'i');
$change = $change + 1;
} elsif ($char_ord==244 || $char_ord==212 || $char_ord==246 || $char_ord==214 || $char_ord==242 ){
substr($param,$i,1,'o');
$change = $change + 1;
} elsif ($char_ord==251 || $char_ord==219 || $char_ord==252 || $char_ord==220 || $char_ord==249 || $char_ord==217 ){
substr($param,$i,1,'u');
$change = $change + 1;
} elsif ($char_ord==255 ){
substr($param,$i,1,'y');
$change = $change + 1;
} elsif ($char_ord==231 ){
substr($param,$i,1,'c');
$change = $change + 1;
} elsif ($char_ord==241 || $char_ord==209){
substr($param,$i,1,'n');
$change = $change + 1;
} elsif ($char_ord==231 ){
substr($param,$i,1,'c');
$change = $change + 1;
} elsif ($char_ord==32 ){
substr($param,$i,1,'_');
$change = $change + 1;
}
}
return $param;
} # end of replace_chars function






--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>