open(DICT, "dictionary.txt" or die "Error: $!"; my @words = ; close(DICT) or die "Error: $!"; @words = shuffle(@words); # assume shuffle is defined my @new_words; my @letters = (a .. z); my @cnt = 0; foreach my $letter (@letters) { $cnt = 0; foreach my $word (@words) { if ($cnt > 100) { last; # break loop, our 100 word is found } if ($word =~ m/^$letter/i) { $cnt++; push (@new_words, $word); } } }