2013-05-07 54 views
1

我正在編寫工作代碼並遇到了一個有趣的問題。我已經搜索了關於該主題的前往資源,但沒有找到明確的答案。在perl模塊中,子函數之後需要分號嗎?

在Perl模塊中編寫子函數時,在右括號後面需要分號嗎?

如:

sub printFoo { 

print "foo"; 

}; 

這是在比常規Perl腳本的子功能有些不同?

當我在一個沒有分號的模塊中使用上述函數時,我得到一個引用「undefined子例程」的錯誤。

我有信心,在過去,我使用了類似的代碼段,但沒有分號,但現在我不再樂觀了。

一個正確的方向將是巨大的!

+1

不,不需要分號。你需要在上下文中顯示你的代碼。 – toolic 2013-05-07 13:19:44

回答

5

如果你正在編寫匿名函數,那麼你需要分號,即。

my $func = sub { 
    print "foo"; 
}; 

至於普通的功能,不需要分號,其實分析器可與:

perl -MO=Deparse semi 
sub printFoo { 
    print 'foo'; 
} 

- 不需要

cat semi 
sub printFoo { 

print "foo"; 

}; 
+0

不幸的是,這個問題似乎已經*神奇地*自己消失了。我相信這可能與數據庫驅動程序有關,最終我認爲我可能錯誤地將錯誤歸因於分號,而實際上是其他的分號。然而,這個答案是內容豐富的,並回答了問題。那謝謝啦。 – Andrew 2013-05-07 16:19:51

0

分號,也不會造成任何影響。

從相同模塊的代碼或從使用該模塊的主程序調用子程序時,是否獲得「未定義的子程序」?

如果是後者,很可能是因爲您沒有導出子名稱。