2

PerlモジュールがあるとしましょうMy::Module:

package My::Module;

sub foo {
   return $module_name;
}

$module_nameを取得するには何に置き換えますMy::Moduleか?

4

3 に答える 3

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
于 2012-11-14T00:14:32.410 に答える
3

特別な定数 __PACKAGE__ を見てください。それがあなたが探しているものかもしれません。

于 2012-11-14T00:18:42.650 に答える
-1

現在のスクリプトの名前を取得しようとしている場合:

my $bname=`basename $0`;

print "\n".$bname;
于 2012-11-14T00:04:46.490 に答える