是否可以在调用脚本中扩展perl模块?
类似的东西:
#!/usr/bin/perl
use strict;
use Some::Module;
Some::Module::func = sub {
my $self = shift;
# ...
}
my $obj = new Some::Module;
$obj->func();
非常感谢!
答案 0 :(得分:5)
您似乎想要将添加到包。你几乎拥有它:
|
v
*Some::Package::func = sub {
...
};
^
|
但是如果你知道名字和子体,你为什么要在运行时这样做呢?也许你真的想要
sub Some::Package::func {
...
}
或
{
package Some::Package;
sub func {
...
}
}
或从最近开始,
package Some::Package {
sub func {
...
}
}
请注意,如果你这样做,你几乎肯定会有一个糟糕的设计。
答案 1 :(得分:4)
你可以用typeglobs做你正在谈论的事情,但更简单的方法就是这样做:
use Some::Module;
package Some::Module;
sub func {
my $self = shift;
# ...
}
package main;
my $obj = new Some::Module;
$obj->func();
答案 2 :(得分:2)
是。您可以声明要添加子包的包,只需添加它们。
package Some::Module {
sub func {
my $self = shift;
# ...
}
}
或点击perldoc package了解详情。
如果你想覆盖一个sub,你需要使用typeglobs。