OVH Cloud OVH Cloud

utilisation de tr/-xFF//CU;

7 réponses
Avatar
Newsgroups
Bonjour,

je n'arrive pas à utiliser "tr"

je fais ceci :
$var =~ tr/\0-\xFF//CU;

et il me ressort :
Bareword found where operator expected at common.pm line 156, near "tr/\0-\xFF//CU"
syntax error at script.pl line 156, near "tr/\0-\xFF//CU"

En fait, $var contient des caractères que je n'arrive pas à traiter,
genre : « » … – (des guillemets stylés français, LE caractère "3
points", un tiret long, et il y a aussi un apostrophe en forme de virgule)

NB : je ne sais pas si les caractères ci-dessus ne seront pas
"interpretés" sur ce forum... vous ne les verrez donc pas forcément
comme mon script perl les vois...

Pouvez vous m'aider ?

7 réponses

Avatar
Paul Gaborit
À (at) Tue, 24 Jan 2006 11:13:54 +0100,
Newsgroups écrivait (wrote):
je n'arrive pas à utiliser "tr"

je fais ceci :
$var =~ tr/-xFF//CU;

et il me ressort :
Bareword found where operator expected at common.pm line 156, near
"tr/-xFF//CU" syntax error at script.pl line 156, near
"tr/-xFF//CU"


C'est le 'CU' qui pose problème ! Que vouliez-vous faire en ajoutant
CU ?

Si vous faites :

$var =~ tr/-xFF//;

ça passe (mais ça ne fait rien...).

En fait, $var contient des caractères que je n'arrive pas à traiter,
genre : « » . . (des guillemets stylés français, LE caractère "3
points", un tiret long, et il y a aussi un apostrophe en forme de
virgule)


Si vous voulez supprimer tous les caractères non-ASCII (> 127), vous
pouvez faire :

$var =~ tr/x80-xFF//d;

(le 'd' final permet de dire qu'on supprimer tous les caractères
reconnus pour lequel on n'a pas spécifié de remplaçant...).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Newsgroups
C'est le 'CU' qui pose problème ! Que vouliez-vous faire en ajoutant
CU ?


Je voulais changer Latin-1 to Unicode
cf. http://perl.enstimac.fr/DocFr/perlop.html

Si vous voulez supprimer tous les caractères non-ASCII (> 127), vous
pouvez faire :

$var =~ tr/x80-xFF//d;

(le 'd' final permet de dire qu'on supprimer tous les caractères
reconnus pour lequel on n'a pas spécifié de remplaçant...).


Et bien, ça dois revenir au même de les supprimer ou des les transformer
je pense.

Avatar
Jacques Caron
Salut,

On Tue, 24 Jan 2006 12:26:09 +0100, Newsgroups wrote:

C'est le 'CU' qui pose problème ! Que vouliez-vous faire en ajoutant
CU ?


Je voulais changer Latin-1 to Unicode


Avec quelle version de perl? Ca a beaucoup changé entre les 5.0.x et les
5.6.x et encore entre les 5.6.x et les 5.8.x...

Jacques.
--
Oxado http://www.oxado.com/


Avatar
Paul Gaborit
À (at) Tue, 24 Jan 2006 12:26:09 +0100,
Newsgroups écrivait (wrote):
C'est le 'CU' qui pose problème ! Que vouliez-vous faire en ajoutant
CU ?


Je voulais changer Latin-1 to Unicode
cf. http://perl.enstimac.fr/DocFr/perlop.html


Cette documentation n'est malheureusement pas à jour. Elle date de la
version 5.6.0 de perl. Pour la plupart du contenu, ce n'est pas un
problème. Vous êtes juste tombé sur une partie sensible qui n'a
d'ailleurs pas vécue longtemps. Pour vous dire : c'est moi qui ait
traduit ce document et j'avais complètement oublié cette syntaxe (et
pourtant j'ai écrit pas mal de scripts de réencodage en
Perl...). Désolé de vous avoir involontairement "enduit" d'erreur !

À (at) Wed, 25 Jan 2006 10:58:59 +0100,
"Jacques Caron" écrivait (wrote):
Avec quelle version de perl? Ca a beaucoup changé entre les 5.0.x et
les 5.6.x et encore entre les 5.6.x et les 5.8.x...


Effectivement, le support explicite des différents encodages a
beaucoup évolué dans perl.

En gros :

- Avant 5.6, il n'y avait rien (mis à part des modules extrernes).

- Dans les version 5.6.x, le support intégré à Perl était
expérimental (autant pour les résultats que pour la syntaxe
choisie) et passait par des mécanismes orthogonaux et parfois
incompatibles (locale, pragmas, etc.) dont le "CU" sur lequel vous
êtes tombé.

- Depuis les versions 5.8.x, l'interface et l'implémentation est
quasi stable (et cohérente) et il ne reste que des bugs (très peu
dans les versions récentes).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
Newsgroups
Le Wed, 25 Jan 2006 11:34:39 +0100, Paul Gaborit a écrit :


À (at) Tue, 24 Jan 2006 12:26:09 +0100,
Newsgroups écrivait (wrote):
C'est le 'CU' qui pose problème ! Que vouliez-vous faire en ajoutant
CU ?


Je voulais changer Latin-1 to Unicode
cf. http://perl.enstimac.fr/DocFr/perlop.html


Cette documentation n'est malheureusement pas à jour. Elle date de la
version 5.6.0 de perl. Pour la plupart du contenu, ce n'est pas un
problème. Vous êtes juste tombé sur une partie sensible qui n'a
d'ailleurs pas vécue longtemps. Pour vous dire : c'est moi qui ait
traduit ce document et j'avais complètement oublié cette syntaxe (et
pourtant j'ai écrit pas mal de scripts de réencodage en
Perl...). Désolé de vous avoir involontairement "enduit" d'erreur !

À (at) Wed, 25 Jan 2006 10:58:59 +0100,
"Jacques Caron" écrivait (wrote):
Avec quelle version de perl? Ca a beaucoup changé entre les 5.0.x et
les 5.6.x et encore entre les 5.6.x et les 5.8.x...


Effectivement, le support explicite des différents encodages a
beaucoup évolué dans perl.

En gros :

- Avant 5.6, il n'y avait rien (mis à part des modules extrernes).

- Dans les version 5.6.x, le support intégré à Perl était
expérimental (autant pour les résultats que pour la syntaxe
choisie) et passait par des mécanismes orthogonaux et parfois
incompatibles (locale, pragmas, etc.) dont le "CU" sur lequel vous
êtes tombé.

- Depuis les versions 5.8.x, l'interface et l'implémentation est
quasi stable (et cohérente) et il ne reste que des bugs (très peu
dans les versions récentes).


ok pour toutes ces infos.
effectivement,This is perl, v5.8.7 built for
i486-linux-gnu-thread-multi

donc il ne me reste plus qu'a trouver une solution à mon problème
principal : j'ai des foutu caractères que Perl n'arrive pas à gérer, et
que je souhaite "transcoder"...



Avatar
Paul Gaborit
À (at) Wed, 25 Jan 2006 14:51:54 +0100,
Newsgroups écrivait (wrote):
donc il ne me reste plus qu'a trouver une solution à mon problème
principal : j'ai des foutu caractères que Perl n'arrive pas à gérer, et
que je souhaite "transcoder"...


Avec la version de perl que vous utilisez, il y a tout ce qu'il faut
pour bien gérer les questions de codages. Pour en savoir plus :

perldoc Encode

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>

Avatar
Newsgroups
Le Wed, 25 Jan 2006 15:31:40 +0100, Paul Gaborit a écrit :


Avec la version de perl que vous utilisez, il y a tout ce qu'il faut
pour bien gérer les questions de codages. Pour en savoir plus :

perldoc Encode


Bon, avec mon premier test : ca marche correctement. mais j'attends de
voir plus longtemps avant de crier victoire.