导出整个符号
如果你出口,你似乎可以非常接近
整个符号
而不是地球仪上的一个插槽,
our @EXPORT = ('*FOO');
重新运行相同的测试,你会发现两者非常相似
RssAnon: 93900 kB
RssFile: 5228 kB
RssShmem: 0 kB
事实上,这更接近理论上的最大值,这消除了对
import
完全地,
eval qq[
package Foo$num;
my \$result = &Module::FOO() * &Module::FOO();
] or die $@;
其产生,
RssAnon: 74528 kB
RssFile: 5160 kB
RssShmem: 0 kB
也许,最大的黑魔欢乐。
然而,如果我们按照
aquanight
,
our sub FOO; # top of file
Module->import();
package Bar;
print FOO(); # works
print Bar::FOO(); # does not work
符号
FOO
可用于打包
Bar
没有膨胀
酒吧
包裹。当这种方法应用于上述基准测试时,
eval qq[
our sub FOO ();
Module->import();
package Foo$num;
my \$result = FOO() * FOO();
] or die $@;
并产生这些结果,
RssAnon: 75112 kB
RssFile: 5284 kB
RssShmem: 0 kB
与
constant.pm
,
这可以进一步实现为,
eval qq[
our sub FOO ();
use constant FOO => 42;
package Foo$num;
my \$result = FOO() * FOO();
];
这将产生这些结果,
RssAnon: 75076 kB
RssFile: 5180 kB
RssShmem: 0 kB