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
";
le 02/02/06 15:38:12
un petit commentaire sur l'utilité du map ?
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 |.