有没有办法在Perl中重载/拦截重载对象的函数调用?

时间:2010-11-11 20:10:33

标签: perl function overloading

以类似于重载运算符的方式,有没有办法将某种魔法应用于变量,以便以下内容:

my $magic_var = ...;

some_function($magic_var);

将导致类似这样的事情:

call_function(\&some_function, $magic_var)

如果未定义some_function,我可以使用AUTOLOAD子来捕获呼叫,但是当它被定义时,我不知道拦截呼叫的方法(没有疯狂的事情)比如在所有调用者的潜艇周围注入包装器,或者暂时取消定义所有潜水员。

另一种表达方式是我想写use overload sin => \&my_sin;sin是任何函数,并且只要在a中使用重载对象就让它调用nomethod。功能调用。

编辑:

根据大众的要求,我之所以这样做是因为我正在研究Perl6的Perl5版本,无论是哪个星星。但是,在更多地研究Perl6实现之后,它似乎也没有处理Whatever上调用的函数,所以看起来我不必尝试处理函数调用(只是运算符和方法)呼叫)。

如果有人有兴趣,该模块可以使用CPAN:Whatever

欢迎提出意见/评论。

1 个答案:

答案 0 :(得分:1)

您可以使用tie机制吗?