#!/usr/bin/perl
use strict;
use warnings;
my $tag = '(?:<[^>]*>)';
sub word {
my $word = shift;
qr /$tag*$word/;
}
while (<DATA>) {
s/((??{ word 'tacos' }))/yummy $1/g;
s/((??{ word 'salad' }))/green $1/g;
print;
}
__DATA__
I like tacos.
<5b>I <5c>like <5d>tacos.
I like a salad.
<foo>I <foo>like <foo>a <bar><baz><foo>salad.
<foo>I <foo>like <foo>a <bar><baz><foo>salad <bup>with <bobob>tacos.
I like yummy tacos.
<5b>I <5c>like yummy <5d>tacos.
I like a green salad.
<foo>I <foo>like <foo>a green <bar><baz><foo>salad.
<foo>I <foo>like <foo>a green <bar><baz><foo>salad <bup>with yummy <bo
+bob>tacos.
Abigail