One can imagine a strange scenario where,
If the scenario you describe is possible, it's a bug in HTML::Entities. And it's not what the OP is seeing. The OP claims he need to do too many decodings, not too few.
I think you're thinking of double-encoding, where "foo" was accidentally encoded as
when it should have been encoded as&quot;foo&quot;