use strict; use warnings; use Data::Dumper; my %data = ( A => { A => 5, R => -2, N => -1 }, R => { A => -2, R => 7, N => -1 }, N => { A => -1, R => -1, N => 7 }, ); my @keys = sort keys %data; print ' '; printf "%4s" => $_ for @keys; print "\n"; for my $row (@keys) { print $row; printf "%4s" => $data{$row}{$_} for @keys; print "\n"; } exit;