in reply to print hash of hashes as lists

For your specific problem
print join("|",@{$evilhash{$id}}{@colors}),"\n";
works like your first example.

Update: I think I need to read up on my hash slices.