2016-08-18 129 views
2

請列舉所有支持以下說法的理由:「每個Perl包應放入一個單獨的文件(一個文件中不包含多個包)」。多個Perl包在一個文件中?

例如,我有這樣的代碼:

{ 
package Classes::City; 
# ... 
} 
{ 
package Classes::Cities; # for lists of multiple cities 
# ... 
} 

我應該重構這個代碼分成兩個獨立的.pm文件? (把這個問題看作是上述問題的一個例子,而不是一個額外的基於觀點的問題,我只想列出參數,而不是基於意見的答案。)

+0

你從哪裏得到報價?請添加一個來源。這可能已經指出你的解釋。我現在可以想到幾個,但也有例外。 – simbabque

+0

@simbabque我不記得我在哪裏得到報價 – porton

+0

請不要接受我的答案。這阻礙了其他答案,並且可能會有人有更多的時間和更多的研究來提供比我更好的答案。 – simbabque

回答

4

主要原因是Perl會爲你加載模塊自動當你userequire他們與包名稱。它通過將軟件包名稱轉換爲文件系統中的路徑並檢查該文件的每個@INC目錄來實現。

use Classes::City; 
# will be converted to on Linux: 
Classes/City.pm 

如果你有兩個類::城市和類::城市在一個文件中,你不能沒有裝載市,因爲文件中的類/ Cities.pm任何地方都不會在你的@INC存在加載::城市。

use Classes::City 
# blows up 

您現在需要跟蹤哪些軟件包在哪個文件中。這會讓你的生活更加艱難。

+1

它也讓你的用戶的生活更加艱難。如果您的用戶在「Classes :: Cities」子例程中收到警告並希望查看源代碼,該怎麼辦? – mob