Much as I hate to say it, it looks to me like all the problems you're having are coming from your data structure. Since you have a tree of data, would it make more sense to store it in a tree structure? Start with an array of volumes, with each entry in the array being the complete path and name of the XML file for that volume. Then add a hash where the keys are the XML file names, and the values are pointers to more hashes of hashes that contain the XML data.
Once you can load and save the XML files from the hashes (which won't be that bad with a little recursion) the display should be straightforward, because it mirrors the data structure.
If you can get a copy of "Mastering Algorithms with Perl" it has great stuff on data structures and examples of how they work.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||