我很确定我在某个地方读到过它是可能的,但是您需要注意一些问题。不幸的是,我找不到描述您需要做什么的教程或页面。我浏览了Perl 教程,但没有找到我记得读过的那个。有人可以给我指出一个描述如何将多个包放入单个 .pm 文件的页面或文档吗?
问问题
16179 次
4 回答
41
这就是我通常的做法:
use strict;
use warnings;
use 5.010;
{
package A;
sub new { my $class = shift; bless \$class => $class }
sub hello { say 'hello from A' }
}
{
package B;
use Data::Dumper;
sub new { my $class = shift; bless { @_ } => $class }
sub hello { say 'Hello from B + ' . shift->dump }
sub dump { Dumper $_[0] }
}
$_->hello for A->new, B->new( foo => 'bar' );
于 2009-11-17T15:12:42.933 回答
19
您只需使用另一个包语句开始新包:
package PackageOne;
# ...... code
package PackageTwo;
# .... more code
于 2009-11-17T13:35:24.410 回答
8
这对我有用:
#!/usr/bin/perl
use strict;
use warnings;
{
package A;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(a_sub);
our @EXPORT = qw(a_sub);
sub a_sub {
# your code ...
}
}
{
package B;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(b_sub);
our @EXPORT = qw(b_sub);
sub b_sub {
# your code ...
}
}
# Main code starts here ##############
use boolean;
use Data::Dumper;
import A qw(a_sub);
import B qw(b_sub);
a_sub();
b_sub();
重要的一点是,不要使用“use”,而是将其更改为“import”(这样它就不会去尝试查找文件)。
于 2016-05-29T11:51:50.080 回答
3
怎么做:只需发出多package
条指令。
我能想到的陷阱:-my
变量不是包本地化的,所以无论如何它们都是共享的。在您发布任何内容之前,默认情况下您处于打包状态main
。
于 2009-11-17T13:36:54.780 回答