no save
Assistance
Achat
News

Forum | programmation
Perl : expressions régulières
deniss92, le mar. 17 juin 2008 à 16:04:36
Bonjour,
Je cherche à mettre en place un script sous Perl qui converti le 1er caractère du 1er mot (non numérique) et le 1er caractère du dernier mot en majuscule, dans le champ adresse.

Voici le fichier source :

9999999999N;33000128;TERRIEUR;ALAIN;13 rue thibault chabrand;95240;CORMEILLES EN PARISIS;FRANCE
1234567891Z;44150912;TERRIEUR;ALEX;10 RUE CHARLE DROT;92500;RUEIL MALMAISON;FRANCE
1987654321F;00000178;PEUPLU;JEAN;15 rue bernard de jussieu;92600;ASNIERES SUR SEINE;FRANCE
1357911134G;00000180;OPERA;CHANTAL;25 Rue de la Marne;78800;HOUILLES;FRANCE

le script actuel est le suivant ;

#!/usr/bin/perl
#
# script maj.pl

use POSIX qw(locale_h);

$old_locale = setlocale(LC_CTYPE);

setlocale(LC_CTYPE, "fr_FR.ISO8859-1");

$delimited_in = ';';
$delimited_out = "\t";

use locale;
while (<>)
{
($ine , $id , @tab) = split /$delimited_in/;
$tab[0] =~ s/(\w+)/\u\L$1/g; ### 1ère lettre de la colonne nom du tableau en majuscule.
$tab[1] =~ s/(\w+)/\u\L$1/g; ### 1ère lettre de la colonne prenom du tableau en majuscule.
$tab[2] =~ s/(\pL+)/\u\L$1/g;
#$tab[2] =~ s/^\D+\S(\w+)/\u\L$1/g;
print join $delimited_out, ($id , $ine , @tab) ;
}

setlocale(LC_CTYPE, $old_locale);

Le problème est que le script converti en majuscule le 1er caractère de chaque mot du champ adresse. Et je n'ai pas encore trouvé la bonne syntaxe.

Si quelqu'un a une idée, ce serait vraiment sympa.

Merci d'avanceConfiguration: Linux Fedora
Firefox 2.0.0.14


deniss92
oct. 08
Suivant
REPONSES
deniss92
oct. 08
lami20j
oct. 08
deniss92
oct. 08
Version Web
Réalisé par RedShift
no save