我最近看到一些使我困惑的Perl代码。我拿出所有额外的部件来看看它是如何工作的,但我仍然不明白它为什么起作用。如何调用Perl模块中的子例程?
基本上,我创建此虚拟 “模块”(TTT.pm):
use strict;
use warnings;
package TTT;
sub new {
my $class = shift;
return bless {'Test' => 'Test'}, $class;
}
sub acquire {
my $tt = new TTT();
return $tt;
}
1;
然后创建该脚本使用模块(ttt.pl):
#!/usr/bin/perl
use strict;
use warnings;
use TTT;
our $VERSION = 1;
my $tt = acquire TTT;
print $tt->{Test};
线令我困惑,我认为是行不通的,是:
my $tt = acquire TTT;
我认为这是行不通的,因为“acquire”子是n曾经出口过。但它确实有效。 我的“TTT”的号召,收购后困惑,所以我删除了,留下了一行:
my $tt = acquire;
它抱怨裸字的,像我想的那样。我加了括号,就像这样:
my $tt = acquire();
它抱怨说,没有一个main::acquire
,像我想的那样。
我习惯了可用于对象的子例程,或者正在导出的子例程,但是我从来没有看到过使用包名称调用的子例程。我甚至不知道如何在Google上搜索这些内容。
所以我的问题是,子程序调用后如何添加包名称工作?我从来没有见过类似的东西,这可能不是一个好习惯,但是有人可以解释Perl正在做什么吗?
谢谢!
非常感谢 - 现在总感觉! – BrianH 2011-04-08 16:07:28