Perl => Caractere ^M recalcitrant ...
Le
Stephane Demeleumester
Bonjour,
J'ai un petit probleme de ^M recalcitrant ..
voici une petite partie de mon code :
chomp ($entree=<STDIN>);
@clienthostname = split (/ /,$entree);
$clienthostname = @clienthostname[1];
chop ($clienthostname);
Si je me souviens bien, chomp doit retirer le ^M mais la je suis oblige
de rajouter un chop.
Resume :
1 chomp + 1 chop = ^M supprime
1 chomp + XX chomp = ^M pas supprime
1 chomp = ^M pas supprime
1 chop = ^M pas supprime
2 chop = ^M supprime
3 chop = ^M supprime + une lettre de l'entree stdin .
J'aurais prefere utiliser QUE des chomp, de façon a ne pas "tronquer"
l'entree ..
Une solution ?
J'ai un petit probleme de ^M recalcitrant ..
voici une petite partie de mon code :
chomp ($entree=<STDIN>);
@clienthostname = split (/ /,$entree);
$clienthostname = @clienthostname[1];
chop ($clienthostname);
Si je me souviens bien, chomp doit retirer le ^M mais la je suis oblige
de rajouter un chop.
Resume :
1 chomp + 1 chop = ^M supprime
1 chomp + XX chomp = ^M pas supprime
1 chomp = ^M pas supprime
1 chop = ^M pas supprime
2 chop = ^M supprime
3 chop = ^M supprime + une lettre de l'entree stdin .
J'aurais prefere utiliser QUE des chomp, de façon a ne pas "tronquer"
l'entree ..
Une solution ?

Poser une question

une demonstration
# perl -le '$_="toto";print;chop;print;chop;print;chop;'
toto
tot
to
# perl -le '$_="toto";print;chomp;print;chomp;print;chomp;'
toto
toto
toto
CAD chop vire le dernier caractere tandis que chomp nettoie ce que perl
connais sous l'appellation $/ ce qui nous donne comme indication que
1) sois la saisie n'est pas faite sur la meme plateforme,
2) sois $/ a ete bidouille.
utilise donc un tr/ 15// (par exemple)
# perl -le '$_="toto";print;chop;print;chop;print;'
suffit pour ta demo