# Setup vars - a zero map and position map. my ($pos,%bg_pos) = (0,map { ($_,$pos++); }('aa'..'zz')); my @bg_map = (0) x 676; # Input var my @bg_input = qw[ ab ba ca pe ne yt zz zy gh fg ui jk lk mn ad ]; # Do the actual map of matching bigrams map { $bg_map[$bg_pos{$_}] = 1; } @bg_input; # Output print qq[ ===================================================== Row=1st Letter,Col=2nd Letter ===================================================== ], join(' ',('a'..'z')),"\n\n", map {( "$_ ", ( map { (shift @bg_map)." "; } ('a'..'z') ), "\n" )} ('a'..'z');