While understanding that you may be stuck with that .html, it has a couple problems:
- One, like it or not, the current "wisdom" is to use css instead of presentation/rendering instructions like <b>.
- Second, and perhaps more critical to the perl side of this, if the .html does use <b>, then it should (and may in the future) also use a </b>.
Otherwise, it won't validate, and (more important) most modern browsers will render everything that follows as bold, in contrast to the behavior of older ones which -- in effect -- assumed that if they encountered a tag required to be balanced that was NOT balanced, they would close that tag at a </p> or </td> or </li> (etc).
On the other hand, v5 or 6-generation browsers behave more in the manner of the Recent CB Messages,where unbalanced rendering tags foobar everthing which follows, until someone fixes it ("...lends the CB a </whatever"> tag.
And the relevance to your perl? Well, if the source .html becomes compliant, then your solution may need to deal with more capable parsing of that .html than (simple) regexen accomodate... at which point your solution may come to be dependent upon using an appropriate module -- be that one of the .html parsers or something from the Balanced:: family.