您可以使用以下示例中的两种语法调用子例程作为方法.
但您也可以不将其作为对象调用.
#==================================================== package Opa; sub opa{ $first= shift; $second= shift; print "Opa $first -- $second\n"; } 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 -- $second\n"; }
输出:
object: Opa Opa -- uno object: Opa Opa -- uno class: Opa uno -- segundo class: Opa Opa -- uno