Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: multiple (different) substitutions on same $foo

by Daruma (Curate)
on Aug 22, 2003 at 05:26 UTC ( #285675=note: print w/ replies, xml ) Need Help??


in reply to multiple (different) substitutions on same $foo

Greetings!

You could put your pairs into a hash for easy reference...

use strict; use warnings; my $foo = "The frog kissed the woman and became a man."; print "$foo\n"; my %replace = ( "frog" => "toad", " man" => " boy", "woman" => "girl" ); foreach my $find (keys %replace) { $foo =~ s/$find/$replace{$find}/; } print "$foo\n";
-Daruma

Update changed variable names for easier reading...


Comment on Re: multiple (different) substitutions on same $foo
Download Code
Re^2: multiple (different) substitutions on same $foo (at once)
by tye (Cardinal) on Aug 22, 2003 at 05:36 UTC

    For a second, I thought you were suggesting what I was going to suggest... Close:

    my %repl= ( frog=>"toad", man=>"boy", woman=>"girl" ); $foo =~ s/(frog|man|woman)/$repl($1)/g;
    And you can even build the regex from the keys, if you like:
    my $re= join "|", map quotemeta($_), keys %repl;
    But the original code is probably both faster and simpler. (:

                    - tye

      However, the original poster specified one /g and two non-/g replacements. If that is the real intent, then a data-table solution would need to flag the repeatable replacements versus the singular replacements. If they all should be repeatable, then the data solutions offered are very useful.

      Also, a note to the original poster: s/man/boy/ would create a lot of strings like "read the fine boyual" in a general text. You may want to learn what the zero-width assertion \b does inside a regex. s/\bman\b/boy/g; s/\bmen\b/boys/g may help you out.

      --
      [ e d @ h a l l e y . c c ]

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://285675]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2014-09-01 19:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (16 votes), past polls