在 Perl 中,是否可以访问当前包的名称(例如,在自定义错误报告中打印它)?
The special symbol __PACKAGE__ contains the current package,
but cannot (easily) be used to construct variable names.
__PACKAGE__
可以得到代码编译时所在的包。
或者,你可以使用 caller
。它可以获取调用当前子程序的代码所在的包。
package Report;
sub gen_report {
my $report = "This report is generated for ".caller().".\n"; # MyModule
...
}
package MyModule;
Report::gen_report();
my $var = __PACKAGE__ .'::MySubClass';
来获取变量,它没有标记并且不会被插值。在更复杂的情况下,这可能会变得棘手。 (与my $var = "${pkg}::MySubClass";
相比较) - plusplus