以类似于重载运算符的方式,是否有方法对变量应用某种魔力,以便:
my $magic_var = ...;
some_function($magic_var);
会导致如下结果:
call_function(\&some_function, $magic_var)
如果
some_function
没有定义,我可以用
AUTOLOAD
sub来捕捉调用,但是当它被定义时,我不知道拦截调用的方法(不需要在调用方的所有sub周围插入包装器,或者暂时取消定义所有sub之类的疯狂操作)。
另一种说法是我想写
use overload sin => \&my_sin;
但有
sin
任何函数,并让它调用
nomethod
当重载对象在函数调用中使用时,与sub类似。
编辑:
根据大家的要求,我之所以要研究这个问题,是因为我正在研究perl5版本的perl6,不管它是什么恒星。然而,在进一步研究perl6实现之后,它似乎也不处理被调用的函数
Whatever
,所以我似乎不必尝试处理函数调用(只是运算符和方法调用)。
如果有人感兴趣,该模块将在CPAN上运行:
Whatever
.
欢迎反馈/评论。