Perl中覆盖函数的示例

时间:2012-05-02 13:27:25

标签: perl function-overriding

请您详细说明Perl中的覆盖功能。一些简单的例子很容易理解。

3 个答案:

答案 0 :(得分:5)

perldoc CORE显示了如何覆盖内置hex函数的简单示例。

   BEGIN {
       *CORE::GLOBAL::hex = sub { 1; };
   }

   print hex("0x50"),"\n";                     # prints 1
   print CORE::hex("0x50"),"\n";               # prints 80

答案 1 :(得分:4)

http://perldoc.perl.org/perlsub.html#Overriding-Built-in-Functions

  

许多内置函数可能会被覆盖,但这应该仅偶尔尝试并且有充分理由。通常,这可能是由试图模拟非Unix系统上缺少的内置功能的包来完成的。

     

覆盖只能通过在编译时从模块导入名称来完成 - 普通的预先声明不够好。但是,使用subs pragma实际上可以通过导入语法预先声明subs,然后这些名称可以覆盖内置的:

示例:

use subs 'chdir', 'chroot', 'chmod', 'chown';
chdir $somewhere;
sub chdir { ... }

注意:以上所有内容均来自上述链接

答案 2 :(得分:1)

您可以使用Sub::Override,但我不知道它是否可以覆盖原生函数。