Thanks ever so much for your help choroba I have made the changes you suggested and this is now working perfectly :-)
Just one thing if you can help. In the sample data structure I posted there is a @dev tag in this and I need to get this value prepended to each line of output. I mustn't hardcode this though.
I have other hashes of hashes defined under this whole @dev section which are called @build and @software (which both have loads of mount definitions in )and to each of the lines printed when I parse these I need to prepend the corresponding tag @build/@software.
Would you be able to help me with what I need to do here please?

Comment on Re^4: Traversing a complex data structure searching for certain keys and printing their values

I hope the hints I have given should be enough for you to hack a solution yourself. If there are details you still do not grasp, feel free to ask a new question, but do not await we do your work for you.

Just one other thing would you know what I would need to do to this sub routine so that I could get different output formats?
For example I still need to pass in @keylist to the subroutine to make sure all the keys are there but I want to also parse in an output format string aswell.
So for example if I wanted to print all the lines like this: