Защо моят скрипт отчита „неинициализирана стойност в 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 ...
}

Какво причинява грешката?

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


person mseery    schedule 19.11.2008    source източник


Отговори (2)


След eval има точка и запетая.

person Svante    schedule 19.11.2008
comment
И eval приема $_ като свой аргумент по подразбиране. Което ви позволява да правите неща като: perl -wnE'say eval', но иначе не е особено полезно. - person ysth; 20.11.2008

Eval тук така или иначе няма да направи абсолютно нищо. Обратните тикчета никога не хвърлят грешки. Не $@, а $? искате да проверите.

Освен това, ако изхвърляте резултата, може да е по-чиста идея да използвате система. напр.

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