A R N D * A 4 -1 -2 -2 -2 R -1 5 0 -2 -2 N -2 0 6 1 -2 D -2 -2 1 6 -2 * -2 -2 -2 -2 4 my data structure sees like this: $VAR1 = { 'A' => { 'A' => 4, 'R' => -1, 'N' => -2, 'D' => -2, }, 'R' => {'A'=> -1, 'R'=> 5, and so on with all rows #### my @letters=qw( A R N D); sub printMatrix1 { my ($A) = @_; foreach my $key (sort keys %$A) { print $key." "x2; foreach my $key2 (sort keys %{$A->{$key} } ) { printf( "%.4f " , $A->{$key}->{$key2} ); } print "\n"x2; } }