at a minimum, you should head jdporter's suggestions in response to the snippet you already posted. particularly since now you have all those chr calls inside a function body, so using the same set twice will redo all the computation.
Personally: I don't like duplicating data in a new format, you never know when the "authoritative" copy might change. i much prefer to have a tool to translate the data from the authoritative format to the format i want.
In this case, instead of a module with a bunch of hardcoded data structures -- how about an XML::Entities modules that knows how to parse the raw .ent files to generate the data structures? this would have the added benefit of working with all the various known entity sets and not just the one set you are currently interested in (not to mention, any custom entity sets someone else might make in the future)
That module could be used by the Makefile.PL of other modules (named things like XML::Entity::ISO8879) to automaticly download the .ent files the perl data structures to write as source code for fast reuse. (or at the very least, you could use a module like i describe at build time to generate modules like the one you've already made easily -- but other people could use it too.)