Norm,
take a look at src/epggrab/module/eit.c. This is the EIT handler, but it has 2 pseudo modules called uk_freesat and uk_freeview. The purpose of those pseudo modules is 3 fold:
1. It makes it clear to users that those specific services are supported (gives them a warm fuzzy feeling ;) ).
2. It enables me to decide whether or not to use the huffman decoding (I'm concerned that since they use a private field value to define this is being used some other network might existing in the future that uses the same value to mean something else, this is my way out).
3. They pre-define which multiplexes and PIDs carry the relevant info. Note: they don't create multiplex instances, you have to already have done that.
1. You'll need an entry in eit_init() to create the new module. Copy, paste and change names sensibly.
2. If you know which muxes carry the extended info put something ineitenable() to pre-register the muxes with the EPG scanning system. Otherwise it will just have to wait until something gets detected and will then be logged in the config (which persists a restart, so they will be added again anyway next time).
3. Then you if NA uses non-standard PIDs you need to register them ineitstart(). There is some trickery goes on in here because the uk_free* modules are not real modules. Ignore that I can help there if anything needs tweaking.
4. If NA is using huffman encoding as you suggest you need to modifyeitget_string_with_len() to add the relevant rules. I can help with that. For free* this involves registering a custom string conversion routine called freesat_huffman_decode() if the string format byte is 0x1f. I'd need some more input on how the strings are presented to offer some advice on what is necessary here.
5. And finally you need to implement the huffman decoding for NA. Depending on what format your tables are in, there are already 2 huffman decoders in TVH, the freesat one which is one I nicked from elsewhere and is intimately tied to the optimised freesat tables (it can be re-used you just need to know how to optimise the tables, and I don't ;) ). The other is a very simplistic huffman decoder I wrote that uses the basic dictionary with no optimisation. If you have the tables and convert them to the appropriate format that would probably be easy to use.
That might sound like a lot, but in reality 1-3 are one liners, as most likely will be 4. The only real work is in 5. The system will take care of the rest for you.
Adam
P.S.
Might be worth posting your perl script? might be able to help offer better advice based on that (assuming I can decipher your perl code ;) ).