PerlモジュールがあるとしましょうMy::Module
:
package My::Module;
sub foo {
return $module_name;
}
$module_name
を取得するには何に置き換えますMy::Module
か?
PerlモジュールがあるとしましょうMy::Module
:
package My::Module;
sub foo {
return $module_name;
}
$module_name
を取得するには何に置き換えますMy::Module
か?
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
特別な定数 __PACKAGE__ を見てください。それがあなたが探しているものかもしれません。
現在のスクリプトの名前を取得しようとしている場合:
my $bname=`basename $0`;
print "\n".$bname;