Thanks for everybody's help here. I've synthesized all of your suggestions as well as made some additions and I really think I've written something cool here.
http://www.esologic.com/?p=205
That's my blog post about it, essentially it can take input data and split it into multiple USEABLE parts.