Most likely, the content of @list_words is not what you think it is. Maybe it contains terminal control codes, or one single large line.
Note that you output @list_words twice, with no delimiter in between, which will make debugging this much harder.
My first attempt at debugging this would be to add some non-whitespace characters around the elements of @list_words while printing them, and cut down @list_words to say 10 elements that you can also share here:
splice @list_words, 10; # inspect only the first 10 elements
use Data::Dumper;
local $Data::Dumper::Useqq = 1; # output strings with whitespace chara
+cters escaped
while (scalar @list_words) {
test_if_letters_are_included();
foreach(@list_words) {
print "list_words:<$_>\n";
print Dumper $_; # also show the string with whitespace escaped
}
my @array = qw(this that the other thing);
print "@array";
#say "@list_words";
say scalar @list_words;
}