OVH Cloud OVH Cloud

version fonctionnelle de la substitution de chaine.

2 réponses
Avatar
Matthieu Moy
Bonjour,

En perl, il y a le très fameux

$x =~ s/a/b/ ;

Pour appliquer la substitution s/a/b à x.

Mais y-a-t il une version fonctionnelle de cette substitution, c'est à
dire une instruction qui ne modifie pas $x et qui renvoie le résultat
de la substitution.

En d'autres termes, une version abrégée de

$y = $x;
$y =~ s/a/b/;

Merci,

--
Matthieu

2 réponses

Avatar
Jean-Michel Hiver
Bonjour,

En perl, il y a le très fameux

$x =~ s/a/b/ ;

Pour appliquer la substitution s/a/b à x.

Mais y-a-t il une version fonctionnelle de cette substitution, c'est à
dire une instruction qui ne modifie pas $x et qui renvoie le résultat
de la substitution.


Tu peux faire quelque chose comme ca:

Dans le cas d'une variable magique, globale ou locale:

$_ = 'azazazazaza';
print do { local $_ = $_; s/a/b/g; $_ };

Le bloc 'do { ... }' devient effectivement une fonction retournant la
valeur substituee dans toucher au $_ original.


Dans le cas d'une variable privee, il te faut utiliser 'my' en lieu et
place de local:

my $x = 'azazazazaza';
print do { my $x = $x; $x =~ s/a/b/g; $x };'


J'espere que ca aide.

Avatar
Stephane Chazelas
2003/11/02, 23:02(+01), Matthieu Moy:
[...]
$y = $x;
$y =~ s/a/b/;


($y = $x) =~ s/a/b/;

à ne pas confondre avec

$y = $x =~ s/a/b/;

Voir perlop.

--
Stéphane ["Stephane.Chazelas" arobase "free.fr"]