如何查看 Perl 模块的对象参数?

How to view the object arguments of a Perl module?

如何查看可以传递给 Perl 模块上的新对象的 arguments/parameters?我通常会去 CPAN 并查看 SYNPOSIS 部分以了解我正在尝试做的事情的示例。但是他们提供的示例和描述并不总是全面的,我最终不得不寻找其他人使用该模块的示例,并希望有人尝试过以与我相同的方式使用该模块。

这是我尝试使用的最新模块

 use Bio::DB::GenBank;
 my $gb = Bio::DB::GenBank->new(-format     => 'Fasta',
                                -seq_start  => 2,
                                -seq_stop   => 51,
                                -strand     => 1,
                                -complexity => 1);

如何查看可以传递给 Bio::DB::GenBank->new() 的完整参数列表。有没有办法查看 object/object/module 定义?还是对象的构造函数?

编辑:我刚刚意识到我可以从 CPAN 下载模块并自己查看模块中的代码以获得对象参数,但我想知道是否有人有更好的方法?

CPAN 上的模块 - 确定了解的方法是查看代码,看看它们做了什么。这并不总是特别直截了当,但它是唯一的真理来源。

否则还有文档,开发人员应该在其中描述 (public) 模块功能。这并不总是会发生,有时开发人员清楚的事情,并不是每个潜在的模块用户都清楚。

但这在一定程度上是使用 public 贡献模块库的权衡 - 有些模块经过精心打磨,闪闪发光,而另一些则......好吧,更像是一个工作-进步。

好消息是 - 大多数维护者都乐于接受更新和修复。通常,某些东西 'lacking' 仅仅是因为可用时间,或者它在功能方面满足当前需求。

首先要做的是查看文档,这是 Perl 的规则,因为它可以在命令行中使用:

perldoc Bio::DB::GenBank

该检查不需要时间。如果这没有告诉您您需要知道的一切,就像在这种情况下一样,我总是会查看接下来的测试。在我看来,这是查看 class/method 应该如何工作的最简单方法。如果您有一点经验,阅读好的测试比阅读文档要 better/faster。阅读代码对我来说通常是最后的手段,因为即使是简单的代码通常也很难理解,我认为这可能归咎于风格差异(和 Perl 本身)。

此时,如果您找不到任何测试或文档,您需要问问自己这个模块是否值得您花时间。我会说几乎总是答案是否定的。有用和流行的模块应该有一些基本的测试和文档。需要注意的一件事(尤其是 BioPerl)是,如果有文档,它可能来自另一个模块。人们经常将模块复制过来,更改代码,然后将其上传到 CPAN 或 github :-/.

您没有问具体问题,但我猜您正试图 get/manipulate 来自 GenBank 的数据。在这种情况下,我会建议直接使用 NCBI 的 E-Utilities 接口或使用 Bio::DB::EUtilities from BioPerl (not core though, separate install). There are some nice guides such as the EUtilites Cookbook and the EUtilities webservices guide,尽管后者是基于 SOAP 服务的,可能超出了大多数用途的需要。

如果您有更具体的问题,我也很乐意提供帮助。