我是Perl的新手所以我不知道它是否可行。 我有兴趣创建一个能够捕获所有调用的模块。
它的用法如下:
$object = new Foo;
$object->blah;
函数名称(所以在这种情况下" blah"将由Foo咳嗽并作为字符串返回到屏幕)。
我不知道如何做的是将被调用的函数名称作为字符串。
答案 0 :(得分:5)
您可能需要查看AUTOLOADING
如果你调用一个未定义的子程序,你通常会立即得到一个致命的错误,抱怨该子程序不存在。 (同样,对于用作方法的子例程,当该类的包的任何基类中不存在该方法时。)但是,如果在用于定位原始子例程的包或包中定义了AUTOLOAD子例程,则该AUTOLOAD子例程使用将传递给原始子例程的参数调用
my $object = new Foo;
print $object->blah, "\n";
package Foo;
sub new { return bless {}, shift }
# catch-all function
sub AUTOLOAD {
return $AUTOLOAD;
}
输出Foo::blah