substitution à la volée

Le
Etienne Valquez
bonjour,
j'ai un besoin de faire une substitution à la volée sans variable
intermédiaire.
dans l'idée mais ça ne marche pas, je veux changer le , séparateur en .
et faire une multiplcation par 100.00 donc j'ai fait ceci mais ça ne
marche pas.
comment faire ?

$orig="1234,24";
$lod = ($orig =~ s/,/./)*100.00;

printf "%s %s", $orig, $lod;
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
jl_morel
Le #152494
Dans l'article a dit...
j'ai un besoin de faire une substitution à la volée sans variable
intermédiaire.
dans l'idée mais ça ne marche pas, je veux changer le , séparateur en .
et faire une multiplcation par 100.00 donc j'ai fait ceci mais ça ne
marche pas.
comment faire ?

$orig="1234,24";
$lod = ($orig =~ s/,/./)*100.00;

printf "%s %sn", $orig, $lod;


Je propose :

$lod = (($orig =~ s/,/./)?100:100) * $orig;

HTH

--
J-L.M.
http://www.bribes.org/perl

Etienne Valquez
Le #152493
Dans l'article a dit...
j'ai un besoin de faire une substitution à la volée sans variable
intermédiaire.
dans l'idée mais ça ne marche pas, je veux changer le , séparateur en .
et faire une multiplcation par 100.00 donc j'ai fait ceci mais ça ne
marche pas.
comment faire ?

$orig="1234,24";
$lod = ($orig =~ s/,/./)*100.00;

printf "%s %sn", $orig, $lod;


Je propose :

$lod = (($orig =~ s/,/./)?100:100) * $orig;

HTH



parfait :-)
merci beaucoup


Jogo
Le #152492
$orig="1234,24";
$lod = ($orig =~ s/,/./)*100.00;
printf "%s %sn", $orig, $lod;


Je ne comprend pas pourquoi vous ne pouvez pas faire :

$orig =~ s/,/./ ;
$lod = $orig * 100 ;

Mais je vous propose :

$lod = ($orig =~ s/,/./ , $orig) * 100 ;

Si le but est de conserver l'$orig original :

$lod = (($lod = $orig) =~ s/,/./ , $lod) * 100 ;

--
tout téléspectateur pauvre a bien plus de raisons qu'il ne lui en faut
pour croire que l'argent procure quelque chose de tellement ressemblant
au bonheur que seuls des spécialistes peuvent voir la différence.
- Edouardo Galeano - Le Grand Soir.info -

Nicolas George
Le #152491
Etienne Valquez wrote in message
j'ai un besoin de faire une substitution à la volée sans variable
intermédiaire.


Pourquoi cette exigence de ne pas avoir de variable intermédiaire ?

Paul Gaborit
Le #152412
À (at) 17 Sep 2007 16:42:07 GMT,
(Jean-Louis MOREL) écrivait (wrote):
Dans l'article a dit...
j'ai un besoin de faire une substitution à la volée sans variable
intermédiaire.
dans l'idée mais ça ne marche pas, je veux changer le , séparateur en .
et faire une multiplcation par 100.00 donc j'ai fait ceci mais ça ne
marche pas.
comment faire ?

$orig="1234,24";
$lod = ($orig =~ s/,/./)*100.00;

printf "%s %sn", $orig, $lod;


Je propose :

$lod = (($orig =~ s/,/./)?100:100) * $orig;


Même si ça marche avec les versions actuelles, je suis quasiment sûr
que Perl ne garantit pas l'ordre d'évaluation de votre expression.

--
Paul Gaborit - Perl en français -

Paul Gaborit
Le #152411
À (at) Mon, 17 Sep 2007 19:12:11 +0200,
Jogo
$orig="1234,24";
$lod = ($orig =~ s/,/./)*100.00;
printf "%s %sn", $orig, $lod;


Je ne comprend pas pourquoi vous ne pouvez pas faire :

$orig =~ s/,/./ ;
$lod = $orig * 100 ;


C'est à mon avis la "bonne" solution (propre et compréhensible).

Mais je vous propose :

$lod = ($orig =~ s/,/./ , $orig) * 100 ;

Si le but est de conserver l'$orig original :

$lod = (($lod = $orig) =~ s/,/./ , $lod) * 100 ;


Là, ça marche même si ce n'est vraiment pas beau.

On peut aussi faire avec le moteur de regexp :

($lod = $orig) =~ s/(d+)(,(d+))?/$2?"$1.$3"*100:$1*100/e;

--
Paul Gaborit - Perl en français -

Paul Gaborit
Le #152410
À (at) 17 Sep 2007 16:42:07 GMT,
(Jean-Louis MOREL) écrivait (wrote):
Je propose :

$lod = (($orig =~ s/,/./)?100:100) * $orig;


Pour garantir l'ordre d'évaluation :

$lod = ($orig =~ s/,/./) ? 100*$orig : 100*$orig;

Mais dans ce cas, on retrouve l'autre solution :

$lod = ($orig =~ s/,/./, 100*$orig);

Qu'on pourrait aussi écrire :

$lod = ($orig =~ y/,/./, 100*$orig);

--
Paul Gaborit - Perl en français -
Publicité
Poster une réponse
Anonyme