7
4

2 に答える 2

10

Devel::Callerが役立つかどうかを確認してください。funcオブジェクトで呼び出すようにコードを変更したところ、 perl5.14.3 (および 5.24.0)の Mac で動作するようです。

called_as_method($level)

called_as_method returnsサブルーチン at$levelがメソッドとして呼び出された場合は true。

#!/usr/bin/env perl

package Ad::Hoc;
use strict; use warnings;

use Devel::Caller qw( called_as_method );

sub func {
    printf "%s\n", called_as_method(0) ? 'method' : 'function';
    return;
}

package main;
use strict; use warnings;

Ad::Hoc->func;
Ad::Hoc::func();

出力:

方法
関数
于 2013-08-13T20:30:14.623 に答える