brycen has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks, Is there a nice clean way to do a replace after match, sort of like this nice clean but non-working code:
#!/usr/bin/perl -w use strict; my %fixers=( '' => '', '' => '', ); my $text = qq( Blah <a href="">one</a> <a href="">two</a> ); sub tweak_links($) { my $text_ref = shift; while( $$text_ref =~ m|"http://(.*?)["/]|g ) { if( $fixers{$1} ) { $1 = $main::fixers{$1}; } } } tweak_links(\$text);

I'm looking for something that's good when most of the matches never happen, but I can zero in on the right section with a match. In my case I even know which of the replacements is most likely on a particular text block (but all of them could happen in each block.

Is there a usual way this is done?

Keywords: perl regex replacement regular expression table-driven match multiple replacements