Perl, как напечатать название пакета? - PullRequest
22 голосов
/ 10 августа 2011

Возможно ли - в Perl - получить доступ к имени текущего пакета (например, распечатать его в настроенном отчете об ошибке)?

Ответы [ 2 ]

33 голосов
/ 10 августа 2011

С perldoc perlmod :

The special symbol __PACKAGE__ contains the current package,
but cannot (easily) be used to construct variable names.
10 голосов
/ 10 августа 2011

__PACKAGE__ даст вам пакет, в котором был скомпилирован код.

В качестве альтернативы вы можете захотеть caller.Он получает пакет кода, который вызвал текущую подпрограмму.

package Report;

sub gen_report {
   my $report = "This report is generated for ".caller().".\n";  # MyModule
   ...
}

package MyModule;

Report::gen_report();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...