Для того чтобы исправить то, вы можете как раз изменить 2 «elsif (eq $next» выравнивается для того чтобы быть:
elsif ($next и eq $next…
То проверит для того чтобы сделать уверенное $next определено перед пытаться сравнить его.
О выступать перемеююый с иничиативой в perl, то как раз намеревается задавать значение к ему. Предупреждение как раз говорит что $next undefined (то потому что оно не было задано к но или потому что было точно undef'd).