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
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |