2008-11-19 4 views
2

Я получаю это предупреждение:Почему мой скрипт сообщает «неинициализированное значение в строке« eval »?

Use of uninitialized value in eval \"string\" at myscript.pl line 57. 

Когда я запускаю этот код:

eval; 
{ 
     `$client -f $confFile -i $inputFile -o $outputFile`; 
}; 

if([email protected]) 
{ 
     # error handling here ... 
} 

Что вызывает ошибку?

Как исправить основную причину? (Или иначе подавить предупреждение?)

ответ

10

После запятой после eval есть точка с запятой.

+1

Good Heavens. ОК, я идиот. – mseery 2008-11-20 01:35:20

+0

И eval принимает $ _ в качестве аргумента по умолчанию. Что позволяет делать такие вещи, как: perl -wnE'say eval ' , но в остальном это не особенно полезно. – ysth 2008-11-20 02:28:45

12

Эваль здесь ничего не сделал бы в любом случае. Backticks никогда не бросают ошибки. Это не [email protected], а $?, который вы хотите проверить.

Кроме того, если вы выбрасываете результат, может быть более чистая идея использовать system. например

system($client, '-f', $confFile, '-i', $inputFile, '-o', $outputFile) and do { 
    #error handling here... 
}; 

 Смежные вопросы

  • Нет связанных вопросов^_^