親クラスの呼び出し元だと私のコードのようなものになります。Perlの継承 - 私はパッケージの発信者を見つける必要がある状況がある
Inherited.pm:
package Inherited;
our @ISA = qw(BaseClass);
sub new {
SUPER::new();
}
BaseClassのを
MyClass.pmを::.PM
package BaseClass;
sub new {
$a = caller(0);
print $a
}
は今はない別のクラス(MyClass.pm)を持っている
$obj = Inherited->new();
これは、しかし、MyClassが印刷されたステートメントである必要があります。
誰かがこれを解決する方法について私を助けてくれますか?
私はあなたがこれを期待する理由を理解していません。 'Inherited'は呼び出し元です。 'Inherited'の' new() 'をチェックインし、その情報を渡すことができます。 – Cfreak
@Cfreak:応答に感謝します。私は引数を使って渡すことは解決策だと受け入れていますが、親クラスの呼び出し元を見つける方法はあります。私の実際のシナリオでは、引数を渡さずにこの種の機能が必要です。 – sundar
'Carp'のスタックトレース機能を使って、呼び出し元のリスト全体を検索することができるかもしれませんが(Carp :: longmess())、それは素晴らしい解決策ではありません。 CPANの 'Class :: *'モジュールを見てみましょう。そこにはより洗練されたソリューションがあるかもしれません。 – Cfreak