There are three things that I noticed and maybe they could
make a difference:
- selectcol_arrayref and selectall_arrayref return
an array reference. You are assigning their
return value to an array
- After you assign to @row the value of a fetch, you assign
something else, without using that result. Moreover,
your second "my @row" declaration will hide the first one.
If you use warnings, it will tell you straight away.
- You are using "select max(word_id)" to get a count. This
will work as long as you don't delete any record in your
table. You should use "COUNT(*)" instead.
I don't know if these items are responsible for what
you are complaining about, but surely they look suspicious.