in reply to Re: Efficient way to replace a set of values with another set of values
in thread Efficient way to replace a set of values with another set of values

Nice solution. In this case, all cases are at the beginning of the line. It might be a good idea to add an anchor in order reduce the likelihood of false positive matches:
$string =~ s/^($regexp)/$replacements{$1}/gm;
(The m switch had to added so that ^ would match on each line).


When's the last time you used duct tape on a duct? --Larry Wall
  • Comment on Re^2: Efficient way to replace a set of values with another set of values
  • Download Code

Replies are listed 'Best First'.
Re^3: Efficient way to replace a set of values with another set of values
by tobyink (Canon) on Nov 23, 2012 at 10:50 UTC

    Indeed. I was in two minds about whether to include it or not. The substitutions in the examples were consistently at the start of lines, but the OP never explicitly specified that that would always be the case, so I decided to go for the more general "anywhere in the string" match.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
      Yeah, I agree that it depends on exact requirements. I thought it was worth mentioning though, because it's such a simple pattern that I would be worried about it popping up elsewhere in the data.


      When's the last time you used duct tape on a duct? --Larry Wall