dans le programme complet, les donnees sont fournies par l'utilisateur.
Lesquelles ? Si tout est donné par l'utilisateur, il n'y a pas que le 'eval' qui pose problème.
tout est donne par l'utilisateur : la chaine a analyser, la chaine a rechercher, la chaine de remplacement.
Paul Gaborit
À (at) 15 Jun 2010 09:35:49 GMT, luc2 écrivait (wrote):
Le 14-06-2010, Paul Gaborit a écrit :
dans le programme complet, les donnees sont fournies par l'utilisateur.
Lesquelles ? Si tout est donné par l'utilisateur, il n'y a pas que le 'eval' qui pose problème.
tout est donne par l'utilisateur : la chaine a analyser, la chaine a rechercher, la chaine de remplacement.
C'est donc l'utilisateur qui donne l'expression rationnelle recherchée et la chaîne de remplacement contenant d'éventuels $1, $2, etc. Pour que ça puisse marcher il faut déja s'assurer qu'il y a le bon nombre de groupes capturés par la regexp.
De plus, si Perl interpole lui-même les $1, $2, etc. il sera difficile de l'empêcher d'interpoler aussi d'autres constructions comme @{[...code...]} (qui est un 'eval' implicite).
Donc pour faire ce que vous voulez de manière sécurisée et fiable, il faudra réaliser vous-même l'interpolation sans passer par les mécanismes de Perl. Cela ne s'écrit plus en quelques lignes de Perl.
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
À (at) 15 Jun 2010 09:35:49 GMT,
luc2 <luc2@nospam.invalid> écrivait (wrote):
Le 14-06-2010, Paul Gaborit <Paul.Gaborit@invalid.invalid> a écrit :
dans le programme complet, les donnees sont fournies par
l'utilisateur.
Lesquelles ? Si tout est donné par l'utilisateur, il n'y a pas que le
'eval' qui pose problème.
tout est donne par l'utilisateur : la chaine a analyser, la chaine a
rechercher, la chaine de remplacement.
C'est donc l'utilisateur qui donne l'expression rationnelle recherchée
et la chaîne de remplacement contenant d'éventuels $1, $2, etc. Pour
que ça puisse marcher il faut déja s'assurer qu'il y a le bon nombre de
groupes capturés par la regexp.
De plus, si Perl interpole lui-même les $1, $2, etc. il sera difficile
de l'empêcher d'interpoler aussi d'autres constructions comme
@{[...code...]} (qui est un 'eval' implicite).
Donc pour faire ce que vous voulez de manière sécurisée et fiable, il
faudra réaliser vous-même l'interpolation sans passer par les mécanismes
de Perl. Cela ne s'écrit plus en quelques lignes de Perl.
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Perl en français - <http://perl.mines-albi.fr/>
À (at) 15 Jun 2010 09:35:49 GMT, luc2 écrivait (wrote):
Le 14-06-2010, Paul Gaborit a écrit :
dans le programme complet, les donnees sont fournies par l'utilisateur.
Lesquelles ? Si tout est donné par l'utilisateur, il n'y a pas que le 'eval' qui pose problème.
tout est donne par l'utilisateur : la chaine a analyser, la chaine a rechercher, la chaine de remplacement.
C'est donc l'utilisateur qui donne l'expression rationnelle recherchée et la chaîne de remplacement contenant d'éventuels $1, $2, etc. Pour que ça puisse marcher il faut déja s'assurer qu'il y a le bon nombre de groupes capturés par la regexp.
De plus, si Perl interpole lui-même les $1, $2, etc. il sera difficile de l'empêcher d'interpoler aussi d'autres constructions comme @{[...code...]} (qui est un 'eval' implicite).
Donc pour faire ce que vous voulez de manière sécurisée et fiable, il faudra réaliser vous-même l'interpolation sans passer par les mécanismes de Perl. Cela ne s'écrit plus en quelques lignes de Perl.
-- Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/> Perl en français - <http://perl.mines-albi.fr/>
Oreste
On Jun 10, 3:52 pm, luc2 wrote:
bonjour, j'en ai marre.
essaye le suivant:
use strict; my $a = 'salut fabrice'; my $b = 'bonjour'; $a =~ s/salut (.*)/$b $1/; print "$an";
On Jun 10, 3:52 pm, luc2 <l...@nospam.invalid> wrote:
bonjour, j'en ai marre.
essaye le suivant:
use strict;
my $a = 'salut fabrice';
my $b = 'bonjour';
$a =~ s/salut (.*)/$b $1/;
print "$an";