I am with everyone else. Turning a string into an array of characters which you then join slices together from is a mistake. Plus your handling of globals is broken, rather than hand-code that, use local. That is what it is for. And Perl's readability and maintainability comes in making code short and sweet, not in overcommenting.
in reply to Optimization for readability and speed (code)
If you really want to avoid REs and make C programmers comfortable, then I would point you at unpack and substr. Then you at least get some higher order constructs to compensate you for not writing in C.
Oh, a question. I don't know what atomize is supposed to do, but the first molecule in your molecules list is unlikely to be exactly what you planned on...
But still I would structure this by somewhere documenting the format, put in an RE, and somewhere (possibly before the RE, possibly in general documentation) put a pointer at japhy's module for taking an RE apart and explaining it in plain English.