Expression reguliere dans une variable...

Expression reguliere dans une variable... - Perl - Programmation

Marsh Posté le 16-02-2006 à 15:12:35    

question toute bete mais je n'ai pas reussi a trouver de reponse :
comment rendre ceci possible :

Code :
  1. $expr = "s/toto/blabla/g";
  2. $line =~ \$expr;


 
j'ai demande a gougueule mais il n'a pas ete tres cooperatif.  :(

Reply

Marsh Posté le 16-02-2006 à 15:12:35   

Reply

Marsh Posté le 16-02-2006 à 15:24:24    

alors je sens que ça va pas t'aider des masses comme réponse mais:
C'est quoi l'interêt?????
Doit y en avoir un pour que tu poses la question mais la je vois pas!
 
sinon ( en attendant que pospos arrive avec la solution magique) tu peux toujours faire ça:

Code :
  1. $pattern = 'toto';
  2. $replace = 'blabla';
  3. $line =~ s/$pattern/$replace/g;

Reply

Marsh Posté le 16-02-2006 à 17:03:44    

bon ben la solution est pas magique, mais elle existe.
par contre elle marche seulement à moitié
 
$expr = qr/toto/; (avec d'envtuels modifiers genre i)
$line =~ $expr
 
ca ca marche par contre pour du s/// faut faire ca:
 
$expr = qr/toto/;
$line =~ s/$expr/blabla/g;
 
pas le choix...
 
l'interet du qr// c'est essentielement de compiler la regexp (un peu comme le modifier o, mais en plus souple) pour gagner en vitesse (et meme avec le s/// on gagne tout de meme en vitesse en utilisant une regexp compilée dans la partie gauche)
 
uen possibilité pour automatiser ca c'est d'utiliser une hash:
 
my $replace = {
  toto => "blabla",
  epita => "ecole de bourge",
  epitech => "ecole de merde"
};
 
my $expr = join('|', keys %$replace);
$expr = qr/($expr)/;
 
$line =~ s/$expr/$replace->{$1}/ge;

Message cité 1 fois
Message édité par pospos le 17-02-2006 à 11:40:01
Reply

Marsh Posté le 16-02-2006 à 21:40:12    

pospos a écrit :


  epita => "ecole de bourge",
  epitech => "ecole de merde"


 
Merde, grillé  :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed