加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何检查是否使用对象调用方法调用子例程

发布时间:2020-12-15 23:34:14 所属栏目:大数据 来源:网络整理
导读:您可以使用以下示例中的两种语法调用子例程作为方法. 但您也可以不将其作为对象调用. #====================================================package Opa;sub opa{ $first= shift; $second= shift; print "Opa $first -- $secondn";}package main;# as obj
您可以使用以下示例中的两种语法调用子例程作为方法.

但您也可以不将其作为对象调用.

#====================================================
package Opa;
sub opa{
    $first= shift;
    $second= shift;
    print "Opa $first -- $secondn";
}

package main;
# as object:
Opa->opa("uno");
opa Opa ("uno");
# not as object
Opa::opa("uno","segundo");
Opa::opa("Opa","uno");
#====================================================

有一种方法,从子程序内部,知道“一般”,子接收了什么样的调用?

解决方法

您可以使用 Devel::Caller中的called_as_method.

use Devel::Caller qw( called_as_method );
sub opa{
    print called_as_method(0) ? 'object: ' : 'class: ';
    $first= shift;
    $second= shift;
    print "Opa $first -- $secondn";
}

输出:

object: Opa Opa -- uno
object: Opa Opa -- uno
class: Opa uno -- segundo
class: Opa Opa -- uno

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读