Почему мой скрипт сообщает о неинициализированном значении в eval "string"? - PullRequest
2 голосов
/ 20 ноября 2008

Я получаю это предупреждение:

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

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

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

if( $@ )
{
        # error handling here ...
}

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

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

Ответы [ 2 ]

12 голосов
/ 20 ноября 2008

Eval здесь не сделал бы абсолютно ничего в любом случае. Обратные галочки никогда не выбрасывают ошибки. Это не $@, а $?, который вы хотите проверить.

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

system($client, '-f', $confFile, '-i', $inputFile, '-o', $outputFile) and do {
    #error handling here...
};
10 голосов
/ 20 ноября 2008

После eval.

стоит точка с запятой.
...