如何在词汇上关闭Perl的AUTOLOAD子程序?
发布时间:2020-12-16 06:23:23 所属栏目:大数据 来源:网络整理
导读:我被遗留在使用Perl的AUTOLOAD子程序的遗留代码中.每个未映射/未定义的子例程都将由AUTOLOAD处理.是否可以在词法环境中禁用AUTOLOAD处理? 此解决方案不起作用: # ENTER CODE HERE{ # Turn off AUTOLOAD for this block. local *AUTOLOAD; undef *AUTOLOAD;
我被遗留在使用Perl的AUTOLOAD子程序的遗留代码中.每个未映射/未定义的子例程都将由AUTOLOAD处理.是否可以在词法环境中禁用AUTOLOAD处理?
此解决方案不起作用: # ENTER CODE HERE { # Turn off AUTOLOAD for this block. local *AUTOLOAD; undef *AUTOLOAD; # ENTER CODE HERE } # ENTER CODE HERE 解决方法
AUTOLOAD特定于相关包.所以重新定义包方法:
#!/usr/bin/perl # { package autoloading; sub AUTOLOAD { print "YEAH ${AUTOLOAD}!n"; } sub new { return bless {},$_[0]; } } $obj = new autoloading(); $obj->foo(); *{autoloading::AUTOLOAD} = sub {}; $obj->bar(); 产生输出: YEAH autoloading::foo! ($obj-> bar()调用没有行) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |