You could use some fancy regex and use lookahead or lookbehind to make sure you are not inside a html tag.
Such as
s/($seekword)(?!>)/<b>$1<\/b>/ig; (I would also suggest either using an escape for
</b> or use another delimitor for your
s/// such ask
s{($seekwork)(?!>)}{<b>$1</b>}ig;.
This code is of course untested and off the top of my head, I suggest looking up
perlre, and reading up on the subject of
(?!patern) in regexs.
updated: Or as noted above, try the
HTML::Parser module. My trick is a quick and dirty aproach that might break in some cases.