您可以在以下示例中使用两种语法将子例程作为方法调用。
但是您也可以不将其作为对象来调用。
#====================================================
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");
#====================================================
从子例程内部,有一种方法可以“大致”地知道子例程收到了什么样的调用?
您可以called_as_method
从Devel :: Caller使用。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句