小编Mat*_*ang的帖子

perl import子例程有什么特别之处?

我花了两个小时来追踪这个错误.我可以解决它,但我不明白.

如果我有一个./lib/My/Foo.pm看起来像这样的perl模块:

package My::Foo;

sub import {print "importing\n"}

1;
Run Code Online (Sandbox Code Playgroud)

然后使用它import隐式调用子例程:

$ PERL5LIB=./lib perl -MMy::Foo -e 'print "ok\n"'
importing
ok
Run Code Online (Sandbox Code Playgroud)

但是如果我复制相同的模块并在没有冒号的情况下使用它,import不会调用子例程.

$ cp lib/My/Foo.pm lib/Foo.pm
$ PERL5LIB=./lib perl -MFoo -e 'print "ok\n"'
ok
Run Code Online (Sandbox Code Playgroud)

如果我更改import为其他类似的东西do_import,则不会调用子例程.所以我可以避免这种行为.但在我的实际用例中,我有一个Import类和一个抽象方法import,然后在子类中实现该方法.因此,我希望在父类中import自动调用此方法use.

我看着perlootutperlobj并没有看到这个任何提及.

perl packages

2
推荐指数
2
解决办法
168
查看次数

标签 统计

packages ×1

perl ×1