use strict; use warnings; my %element; while (){ my ($elem, $value) = split; $element{$elem}= $value; } print " "; print "$_ " for sort keys %element; print "\n"; for my $k1(sort keys %element){ print "$k1 "; for my $k2(sort keys %element){ my $val = $element{$k1} eq "X" ? 0 : $element{$k2} eq "X" ? 0 : 2; print $val . " "; } print "\n"; } __DATA__ A X B Y C Z D X E X