tfe - tfeserver homepage

Perl roX: substitution multiples :)

<PtitKev> $first=array("a", "b"); <PtitKev> $second=array("c", "d"); <PtitKev> $result=replace($first,$second,"abcd"); <ciel[busy]> ouais <ciel[busy]> et ça remplace quoi par "abcd" ? <PtitKev> bha <PtitKev> nan en php <PtitKev> ca remplace le a par c et le b par d <tfe|aw> %h = ("a"=>"c", "b" => "d" ); <tfe|aw> $var =~ s/((??{join("|",keys %h)}))/$h{$1}/g;'

UPDATE: J'ai remarque que cela ne marchait pas pour des expressions complexes. voila donc une modification:

$var ="abcd"; %h = ("a"=>"c", "b" => "d" ); $var =~ s/((??{join("|",map {"(?:$_)"} keys %h)}))/$h{$1}/g; print "VAR $var ";

ciel

le 02/02/06 15:38:12

un petit commentaire sur l'utilité du map ?

tfe

le 02/02/06 17:34:56

En fait il faut regrouper chaque expression avec des parenthèses (?: ). On utilise donc map pour les rajouter, et on récupère ce qu'il retourne pour joindre par un |.