I'll present two methods which work fairly well. The first method is cleaerer to read, but if the list of substitutions is long, it can lead to excessive typing.

The first method favors long lists of strings to undergo the same substitutions. For example, if $str were actually a large array called @str, you would probably favor the first method.

The second method favors lots of substitutions to be performed for a single string.

my $str = "the boy walked the dog"; for ( $str ) { s/walked/fed/; s/boy/girl/; s/dog/Audrey II/; }

This method just relies on the fact that the for statement causes $_ to alias $str within the scope of the for statement. And regexp binding (=~) binds to $_ if there is no other variable specified.

You could also do it this way:

my $str = "the boy walked the dog"; my %subs = ( "walked", "fed", "boy", "girl", "dog", "Audrey II" ); foreach ( keys %subs ) { $str =~ s/$_/$subs{$_}/; }

This method is pretty much opposite of my first example. But it can be handy if you have a lot of substitutions.

Dave

"If I had my life to do over again, I'd be a plumber." -- Albert Einstein


In reply to Re: Chaining string ops by davido
in thread Chaining string ops by traveler

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.