【问题标题】:Example for override function in PerlPerl 中的覆盖函数示例
【发布时间】:2012-05-02 13:27:24
【问题描述】:

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

【问题讨论】:

    标签: perl overriding


    【解决方案1】:

    perldoc CORE 展示了一个简单示例,说明如何覆盖内置的 hex 函数。

       BEGIN {
           *CORE::GLOBAL::hex = sub { 1; };
       }
    
       print hex("0x50"),"\n";                     # prints 1
       print CORE::hex("0x50"),"\n";               # prints 80
    

    【讨论】:

      【解决方案2】:

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

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

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

      例子:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2016-02-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-06
          相关资源
          最近更新 更多