in reply to improving speed in ngrams algorithm

(being speed an important factor in my process?)
Are you sure? Did you actually notice that the program was too slow, or do you just think being fast might be a good thing? 5-15 elements by array is very little. So unless you process several thousands of strings, micro optimizations won't have a noticeable impact. And if you process that many strings and see that the program is slow, there might be better places to improve it than this quite basic code.

Like I said, it won't change much but one thing you can do is change

for ($ngramWindow_MIN .. $ngramWindow_MAX){ my $ngramWindow=$_;
into
for my $ngramWindow ($ngramWindow_MIN .. $ngramWindow_MAX) {