I'm not a Text::Balanced guru, but I believe all you need to do is specify
a prefix to be skipped, otherwise searching starts at the last pos($text) and
won't find your tag:
my ($extracted, $remainder) = extract_tagged($text, '<B>', undef, '.*?(?=<B>)');
This should have it ignore everything up to the first <B> and then grab what you are after. You may also
find it useful to print $@ which is set if something goes wrong.