Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
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
Replies are listed 'Best First'.
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 surveying the Monastery: (20)
As of 2015-07-30 18:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (273 votes), past polls