Я сталкивался с ошибками в коде Perl, о которых сообщалось в местах, которые не имеют ничего общего с ошибкой. Я исправил одну такую ошибку после нескольких часов удаления и повторного добавления кода построчно, а затем делал несколько проб и ошибок. Две такие ошибки подробно описаны ниже. Мой вопрос: если эти проблемы произойдут в будущем, есть ли способ, чтобы компилятор Perl помог мне исправить это, ИЛИ мне нужно переписать код на каком-то другом языке. (рассматриваю Java).
Моя программа выглядит так:
use switch;
use strict;
use warnings;
...other modules;
sub log{
}
..various sub routines
switch {$val1)
{
log(..) #first invocation of log
case ($val2)
...
}
Теперь в под логе, если я сделаю это
{
$val3 = POSIX::floor($val2/$val4)*$val4;
$val5="/x/y/$logfilename";
}
Я получаю сообщение о том, что в операторе case есть ошибка.
Если я переместить строку $ val5 = "/ x / y / $ logfilename"; ДО $ val3 ошибки нет.
ИЛИ если я удалю '/' в $ val5, т.е. $ val5 = "x", ошибки не будет
ИЛИ если я скажу $ val5 = qq (/ x / y / $ logfilename); нет ошибки
На этот раз я считаю, что мне повезло, что я нашел обходной путь, но это было только после 3 часов борьбы с этим. Есть ли способ, чтобы компилятор Perl сообщал об ошибках точно?
У меня есть еще один аналогичный случай, который я могу сообщить, и могу добавить при необходимости.
Запрошенные входы