Perl 继承 - 谁是父类的调用者

标签 perl perl-module

我有一种情况,我需要找到一个包的调用者,我的代码看起来像:

继承.pm:

package Inherited;
our @ISA = qw(BaseClass);
sub new {
   SUPER::new();
}

基类.pm
package BaseClass;
sub new {
  $a = caller(0);
  print $a
}

现在我有另一个类(MyClass.pm),它可以:
我的类.pm:
$obj = Inherited->new();  

这将打印继承。但我需要 MyClass 作为打印语句。

有人可以帮我解决这个问题吗??

最佳答案

当你给 caller一个论点,你告诉它要返回多少级。你已经给了它参数 0 ,这是当前级别。如果你想上一级,添加 1 :

use v5.12;

package Inherited {
    our @ISA = qw(BaseClass);
    sub new {
       $_[0]->SUPER::new();
    }
}

package BaseClass {
    sub new {
      say "0: ", scalar caller(0);
      say "1: ", scalar caller(1);
    }
}

package MyClass {
    my $obj = Inherited->new;
    }

现在的结果是:
0: Inherited
1: MyClass

请记住始终在您的问题中包含完整的示例程序。您发布的 Perl 代码由于与 caller 无关的各种其他原因而损坏。 .

关于Perl 继承 - 谁是父类的调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012160/

相关文章:

perl - 哪个模块可以有效地一次性解析 .pdf 文件? CAM::PDF 或 PDF::API2

perl - 面向对象的 Perl 中的包、模块和类有什么区别?

perl - mysql_skip_secure_auth 不跳过安全身份验证

perl - 是否可以使用 App::Fatpacker 使用 Log::Log4perl 来填充脚本?

perl - 在 perl 中使用 WWW::YouTube::Download 时出错

regex - 如何删除中间带点的首字母?

perl - 字数统计程序有什么问题?

c - 来自 PSQL 触发器的提示

@INC 中的 Perl 错误 : Can't locate XFileConfig. pm

perl - 提供切换 Devel::Cover 开/关