如何从其子程序之一获取Perl模块的名称?

时间:2012-11-13 23:58:04

标签: perl perl-module

我们说我有一个Perl模块My::Module

package My::Module;

sub foo {
   return $module_name;
}

我将$module_name替换为My::Module

3 个答案:

答案 0 :(得分:10)

package My::Module;

sub foo {
   return __PACKAGE__;
}

[更新]您可能正在寻找以下内容:

package My::Module;

sub new {
    my $self = {};
    bless $self;
    return $self;
}

sub foo {
    my $self = shift;
    return (caller(0))[3];
}

1;


# test 1: calling foo directly.
print "1: ", My::Module::foo, "\n";
# test 2:  instantiating object, then calling method of object instance.
my $x = My::Module->new;
print "2: ", $x->foo(), "\n";

输出:

$ perl test.pl
1: My::Module::foo
2: My::Module::foo

答案 1 :(得分:3)

看看特殊常量__PACKAGE__。 这可能就是你要找的东西。

答案 2 :(得分:-1)

如果您尝试获取所在脚本的名称:

my $bname=`basename $0`;

print "\n".$bname;