我是Perl的新手,所以我不知道它是否可行.我有兴趣创建一个可以捕获所有调用的模块.
它的用法如下:
$object = new Foo;
$object->blah;
Run Code Online (Sandbox Code Playgroud)
函数名称(所以在这种情况下"blah"会被Foo咳嗽并作为字符串返回到屏幕).
我不知道怎么做的是将被调用的函数名称作为字符串.
您可能想要检查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;
}
Run Code Online (Sandbox Code Playgroud)
输出 Foo::blah