<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">I'm with Richard:<br>Why not just tr the line?<br>&nbsp; DB&lt;1&gt;<br>main::(bobbyRegex1.pl:10):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $line = "*!*!* a *!*!* b *!*!* c *!*!*";<br><br>&nbsp; DB&lt;1&gt;<br>main::(bobbyRegex1.pl:14):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; my $pattern = '(a)+\s.*(b)+\s.*(c)+\s'; # kinda/<br>sorta, replaces stuff between patterns also<br><br>&nbsp; DB&lt;1&gt; $expectedMatches = $line =~ tr/abc/def/;<br><br>&nbsp; DB&lt;3&gt; x $expectedMatches<br>0&nbsp; 3<br><br>&nbsp; DB&lt;4&gt; x $line<br>0&nbsp; '*!*!* d *!*!* e *!*!* f *!*!*'<br><br>&nbsp; DB&lt;5&gt;<br><br>--- On <b>Wed, 12/22/10, Richard Dice <i>&lt;richard.dice@gmail.com&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Richard Dice &lt;richard.dice@gmail.com&gt;<br>Subject: Re: [tpm] Search/Replace
 multiple patterns in a single line, in a single pass?<br>To: "J. Bobby Lopez" &lt;jbl@jbldata.com&gt;<br>Cc: "Toronto Perl Mongers" &lt;tpm@to.pm.org&gt;<br>Received: Wednesday, December 22, 2010, 12:20 PM<br><br><div class="plainMail">Two thoughts.<br><br>Why aren't you using the 'global' switch on the substitution, like s///g ?<br><br>Second, if the substitutions in your real code are as simple as in your example code, you should consider the transliterate operator rather than the substitution operator, per $foo =~ tr///;<br><br>Sent from my iPhone<br><br>On 2010-12-22, at 10:44 AM, "J. Bobby Lopez" &lt;<a ymailto="mailto:jbl@jbldata.com" href="/mc/compose?to=jbl@jbldata.com">jbl@jbldata.com</a>&gt; wrote:<br><br>&gt; Hey all,<br>&gt; <br>&gt; I'm trying to figure something out, but having some trouble.&nbsp; I'm trying to replace multiple patterns via capture buffers, with multiple replacements contained in a hash.<br>&gt; <br>&gt; Looking at the
 code below, you can see that the patterns I'd like to match are contained in $regex just fine, however I'd like to have mutiple $replacement{$#} 's depending on the number of patterns I'm trying to replace.<br>&gt; <br>&gt; ==== begin-code ===<br>&gt; #!/usr/bin/env perl<br>&gt; use strict;<br>&gt; use warnings;<br>&gt; <br>&gt; my %replacement;<br>&gt; $replacement{'a'} = 'd';<br>&gt; $replacement{'b'} = 'e';<br>&gt; $replacement{'c'} = 'f';<br>&gt; <br>&gt; my $line = "*!*!* a *!*!* b *!*!* c *!*!*";<br>&gt; <br>&gt; #my $pattern = '(a)|(b)|(c)'; # Doesn't work, only matches first pattern<br>&gt; my $pattern = '(a).*(b).*(c)'; # kinda/sorta, replaces stuff between patterns also<br>&gt; <br>&gt; #$line =~ s/$pattern/$replacement{$1}/; # &lt;-- here's where I'm having difficulty<br>&gt; $line =~ s/$pattern/$replacement{$1} $replacement{$2} $replacement{$3}/; # kinda/sorta<br>&gt; <br>&gt; #$line =~ m/$pattern/;<br>&gt; #print "$1, $2, $3\n";<br>&gt;
 <br>&gt; print $line."\n";<br>&gt; ==== end-code ===<br>&gt; <br>&gt; <br>&gt; Either I'm missing something, or this isn't actually possible, and I'll have to loop through the patterns and replace them individually.<br>&gt; <br>&gt; Thoughts?<br>&gt; <br>&gt; -Bobby<br>&gt; _______________________________________________<br>&gt; toronto-pm mailing list<br>&gt; <a ymailto="mailto:toronto-pm@pm.org" href="/mc/compose?to=toronto-pm@pm.org">toronto-pm@pm.org</a><br>&gt; <a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/listinfo/toronto-pm</a><br>_______________________________________________<br>toronto-pm mailing list<br><a ymailto="mailto:toronto-pm@pm.org" href="/mc/compose?to=toronto-pm@pm.org">toronto-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/toronto-pm" target="_blank">http://mail.pm.org/mailman/listinfo/toronto-pm</a><br></div></blockquote></td></tr></table><br>