Возможно ли в Perl - получить доступ к имени текущего пакета (например, распечатать его в индивидуальном отчете об ошибке)?
Perl, как распечатать имя пакета?
Ответ 1
Из perldoc perlmod:
The special symbol __PACKAGE__ contains the current package,
but cannot (easily) be used to construct variable names.
Ответ 2
__PACKAGE__
предоставит вам пакет, в котором был скомпилирован код.
В качестве альтернативы вам может понадобиться caller
. Он получает пакет кода, который называется текущим.
package Report;
sub gen_report {
my $report = "This report is generated for ".caller().".\n"; # MyModule
...
}
package MyModule;
Report::gen_report();