Give Perl6::Form a try - written by the Damian. Of course you may consider it an overkill for what you need to do - but in all likelihood, your final solution using Perl6::Form will be MUCH more robust than anything most people could put together - even if given a whole week to do so...
http://search.cpan.org/~dconway/Perl6-Form-0.04/Form.pm
If you read in your text file line by line, with each block of non-whitespace treated as an 'object' or 'cell' in your report, that should get you at least 99% of the way there - if not all...