Почему мой скрипт сообщает о неинициализированном значении в eval-строке?
Вопрос
Я получаю это предупреждение.
Use of uninitialized value in eval \"string\" at myscript.pl line 57.
Когда я запускаю этот код:
eval;
{
`$client -f $confFile -i $inputFile -o $outputFile`;
};
if( $@ )
{
# error handling here ...
}
В чем причина ошибки?
Как я могу устранить основную причину? (Или иначе подавить предупреждение?)
Решение
После eval
стоит точка с запятой.
Другие советы
Эвал здесь все равно ничего не сделает. Обратные галочки никогда не выбрасывают ошибки. Вы хотите проверить не $ @
, а $?
.
Кроме того, если вы отбрасываете результат, лучше использовать система . например.
system($client, '-f', $confFile, '-i', $inputFile, '-o', $outputFile) and do {
#error handling here...
};
Не связан с StackOverflow