Добавьте это в начало скрипта.
use warnings;
use strict;
Вы увидите, что вы используете i
вместо $i
в цикле, а также +=
вместо .=
, который следует использовать для объединения. +=
, с другой стороны, добавляет числовое значение с правой стороны (которое равно 0, поскольку «-j» не является числом) с левой стороны.
Тем не менее, мне не удалось получить сообщение "non-lvalue sub" из этого кода, поэтому вы, вероятно, должны предоставить больше информации или, по крайней мере, сказать нам, что такое line 32
.