perl模块是否有任何首选命名约定?
例如,perl世界中更常见的做法是什么?SomeModule
或Some::Module
?也许有些情况下一种风格比另一种更好?
答案 0 :(得分:5)
如果你看一下CPAN,你会发现,大体上,模块名称被组织成名称第一段的顶级类别,并且每个模块的类别中都有一个独特的名称。例如,前十个类别(按分配计数)是
Net
App
WWW
Test
Data
Catalyst
Acme
Text
Dist
HTML
名称的第二部分通常是在该类别的所有其他模块中识别它(例如HTML::TreeBuilder
),或者作为大类别的细分(例如Net::FTP::*
模块)< / p>
名称可能有第三个部分,它表示整个集合的组件模块(例如DBIx::Class::Relationship
和DBIx::Class::ResultSet
)或者是另一个从另一个模块中分类的模块(如HTML::TreeBuilder::XPath
)
很长时间以来,无法控制上传到CPAN的模块的名称,并且它的某些部分可能有点混乱。但是它确实表示一组已定义且不断增长的名称,您应该尝试使用自己的包标识符来避免这些名称。你的例子不太现实,但我可能只用SomeModule
,因为在每对单词之间插入一对冒号肯定是不的方式去< / p>
如果您有多个模块,您可以开始将它们一起收集到类别中,如果您使用顶级类别(如Site
或Company
)避免与任何CPAN模块发生冲突,这将有所帮助你可以使用。示例可以是Site::Utils::Matrices
和Site::Utils::StringProcessing
一个主要规则是您的包名称应该在CamelCase中,因为所有小写名称都保留给Perl pragma
由于stevieb's解决方案已被删除,因此值得我重新发布指向brian d foy优秀On The Naming of Modules的链接,这会产生许多重点
答案 1 :(得分:3)
这取决于您是否打算将模块放在CPAN上。如果你把它放在CPAN上,你应该正在阅读perldoc perlmodstyle
。但是,如果您只是私下使用模块,则最相关的一点是use lib 'my_module';
use Some::Module;
用于表示目录层次结构。例如:
::
这将在名为“Some”的文件夹中将名为“Module.pm”的模块加载到目录“my_module”中。
这不应与包名称混淆,包名称通常也使用::
。对于包名称, {
"show":[
{
"season":[
{
"episodes":[
{
"questionEntry":{
"id":1,
"info":{
"seasonNumber":1,
"episodeNumber":5,
"episodeName":"A Hero Sits Next Door"
},
"questionItem":{
"theQuestion":"What is the name of the ringer hired by Mr. Weed?",
"attachedElement":{
"type":1,
"value":""
}
},
"options":[
{
"type":1,
"value":"Johnson"
},
{
"type":1,
"value":"Hideo"
},
{
"type":1,
"value":"Guillermo"
}
],
"answer":{
"questionId":1,
"answer":3
},
"metaTags":[
"Season 1",
"Episode 5",
"Trivia",
"Arya Stark",
"House Stark"
]
}
}
]
}
]
}
]
}
通常用于指定概念层次结构或包之间的关系,例如类和子类。