use strict; use warnings; use Data::Dump; my %values; map{ $values{$_} = 1} qw(e a i o n r t l s u); map{ $values{$_} = 2} qw(d g); map{ $values{$_} = 3} qw(b c m p); map{ $values{$_} = 4} qw(f h v w y); map{ $values{$_} = 5} qw(k); map{ $values{$_} = 8} qw(j x); map{ $values{$_} = 10} qw(q z); # result words from tybalt89 example my @result_words = qw(along gall gallon goal hall halo halon hang hogan llano loan loll long); my %scores = words_values(@result_words); foreach my $word ( sort{ $scores{$b} <=> $scores{$a} } keys %scores ){ print "$word\tscore:\t$scores{$word}\n"; } sub words_values{ my @words = @_; my %scores = map { my $word = $_; my @chars = split '', $word; my $score; $score += $values{$_} for @chars; $word => $score; } @words; return %scores; } __DATA__ hogan score: 9 hang score: 8 halon score: 8 halo score: 7 gallon score: 7 hall score: 7 along score: 6 llano score: 5 goal score: 5 gall score: 5 long score: 5 loll score: 4 loan score: 4 #### my @board = map{ [('.') x 15] } 0..14 ; print "Empty board:\n"; foreach my $row(@board){ foreach my $col( @$row ){ print $col; } print "\n"; } __DATA__ Empty board: ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... ............... #### Board letter modifiers( just one.. ): 111311111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 111111111111111 #### my @board; foreach my $row(0..14){ foreach my $col( 0..14 ){ $board[$row][$col] = { letter => '.', lett_mod => 1, word_mod => 1}; } } __DATA__ # will result in (first row) ( [ { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, { lett_mod => 1, letter => ".", word_mod => 1 }, ], ...