my %channel_map; for my $channel ( keys %files_by_channel ) { $channel_map{$_} = $channel for keys %{ $files_by_channel{$channel} }; } printf "%-10s %-15s %-40s\n", 'File#', 'Channel Name', 'File Name'; printf "%-10s %-15s %-40s\n", '-' x 10, '-' x 15, '-' x 40; for my $file_number ( sort keys %files_by_number ) { printf "%-10s %-15s %-40s\n", $file_number, $channel_map{$file_number}, $files_by_number{$file_number}; }