http://www.perlmonks.org?node_id=319819


in reply to Transpose the entries

First off, I'd set the record separator to that big line of dashes, then push each 'line' into an array. I'd do this in a block, so that the record separator would automatically return to it's regular value of "\n" after the block. Then I'd go through the array I created in step one, and create a hash by splitting on ": " and newlines, taking care to make sure that a 'cuid' key exists. I'd push this hash into a different array. At that point, I'd be ready to loop through this second array to create output in whatever format I'd need.
update What abigail-II says.