2014-11-14 74 views
0

我只是想EVAL首次,並得到一個編譯錯誤的下面這段代碼:這個eval爲什麼會出現語法錯誤?

my $dom; 
eval { 
    $dom = $PRSR->load_xml(location => $fullpathname, no_blanks => 1); 
} 

my $dtlDocType = getObjectType($dom); # <----- the error occurs here 

它說:「全局符號$ dtlDocType需要明確的包名」。當我刪除eval並讓行設置$ dom保持沒有塊時,它可以工作。在第一行初始化$ dom到任何東西都沒有任何區別。

什麼問題?

+1

'eval {...}'後面需要一個分號,它不是一個塊。 – TLP

+0

哦...謝謝。永遠不會想到這一點。 – jackthehipster

+0

不客氣。文檔似乎將其稱爲一個塊,不太清楚爲什麼,當它沒有這個塊的特徵時。 – TLP

回答

4

eval { ... }之後需要一個分號。

+1

謝謝!這個文檔特別說明了「eval BLOCK」,所以我對後面的例子中的分號變得盲目了...... – jackthehipster

+0

'eval BLOCK'是一個表達式,是的。把它放在一個聲明中,你需要用分號後綴。 – LeoNerd

相關問題