請考慮我在12個目錄中有100個Perl模塊。但是,看看主要的Perl腳本,它看起來像100 use p1 ; use p2 ;
等。解決這個問題的最佳方法是什麼?我應該如何組織很多Perl模塊?
10
A
回答
8
我認爲你不可能直接在你的主程序中使用所有100個模塊。如果你的程序在模塊A中使用了一個函數,然後它從模塊B調用一個函數,但是主程序本身沒有引用模塊B中的任何東西,那麼程序應該只有use A
。它不應該use B
,除非它直接調用模塊B的任何東西。
另一方面,如果您的主程序確實直接與所有100個模塊進行對話,那麼它可能只是太大了。識別程序中的不同功能組,並將每個組分解到其自己的模塊中。這樣做的主要原因是它會導致代碼更易於維護,靈活且可重用,但它也會帶來減少主程序直接與之交談的模塊數量的快樂副作用,從而切割低於任何一個地方所需的use
報表數量。 (並且,是的,我意識到100可能是誇張的,但是,如果您對代碼中模塊的數量use
d感到不舒服,那麼這通常表明代碼有問題試圖在一個地方做的太多,應該分解成一個模塊集合。)
4
把所有的use
語句在一個文件,說Mods.pm:
package Mods;
use Mod1;
use Mod2;
...
,並在您主腳本文件:
use Mods;
2
我支持尤金的解決方案,但你可以組use
陳述在文件按主題,如:
package Math;
use ModMatrix;
use ModFourier;
...
當然,並且當然你應該命名模塊和模型集合有意義。
1
把所有的使用語句放在一個單獨的文件中,就像eugene建議的可能是最好的方法。您可以通過一些元編程將該模塊中的鍵入最小化:
package Mods;
require Exporter;
our @ISA = 'Exporter';
my @packages = qw/Mod1 Mod2 Mod3 .... /;
# or map {"Mod$_"} 1 .. 100 if your modules are actually named that way
for (@packages) {
eval "require $_" or die [email protected]; # 'use' means "require pkg; pkg->import()"
$_->import(); # at compile time
}
our @EXPORT = grep {*{$Mods::{$_}}{CODE}} keys %Mods::; # grab imported subs
#or @EXPORT_OK
相關問題
- 1. 如何組織Perl模塊
- 2. 我應該如何在Perl中維護我的對象模塊?
- 3. 我應該如何組織我的mvc模板?
- 4. 組織很多使用STI的模型
- 5. 我應該如何調用位於perl模塊中的方法?
- 6. WinAPI - 如何組織很多HWND對象?
- 7. python模塊組織
- 8. 我應該如何組織我的Flex應用程序?
- 9. 我應該如何組織我的應用程序?
- 10. 我應該如何組織我的應用程序?
- 11. JavaScript模板化:部分模板代碼應該如何組織?
- 12. 如何正確組織node.js的模塊
- 13. 你如何組織你的NInject模塊?
- 14. 我該如何組織我的Ruby on Rails模型?
- 15. DDD:應該如何組織圖層?
- 16. SimpleExpandableListAdapter的數據應該如何組織
- 17. 應該如何組織AngularJS服務
- 18. MVC控制器應該如何組織?
- 19. 我應該有多個AFHTTPClient來組織我的代碼
- 20. 我應該如何在IIS中組織Web應用程序?
- 21. 我應該如何組織我的c#解決方案?
- 22. 我應該如何組織我的ajax動作文件
- 23. 我應該如何組織我的TCL代碼?
- 24. 我應該如何根據PSR-0來組織我的文件?
- 25. 我應該如何使用pyparsing組織我的函數?
- 26. 我應該如何在Xcode中組織我的文件?
- 27. 我應該如何組織我的OCaml項目?
- 28. 我應該如何組織我的Android uiautomator測試用例?
- 29. 我應該如何組織我的ASP.NET Web API解決方案?
- 30. 我應該如何組織我的主ddl腳本
還可以。有沒有其他辦法可以做到這一點。並感謝:-) – joe 2010-05-07 13:05:24