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.