Perl меняет текущий пакет? - PullRequest
5 голосов
/ 09 октября 2010

Без использования исходного фильтра, есть ли способ изменить текущий запущенный пакет? Я пытаюсь выполнить то же самое, что делает oose.pm , и мне интересно, могу ли я оставить своих пользователей в неосновном пакете.

1 Ответ

5 голосов
/ 09 октября 2010

Я думаю, вы сможете сделать это, изменив PL_curstash и PL_curstname на уровне C.

PL_curstash = gv_stashpvs("Some::Package", GV_ADD);
sv_setpvs(PL_curstname, "Some::Package");

PL_curstash - это хранилище текущего пакета во время компиляции, PL_curstname - это его имя.

Обновление:

Я нашел эту проблему довольно интересной и реализовал решение как Devel::ChangePackage.Оказывается, то, что я изначально предложил, просто работает.Вы можете получить его либо из http://github.com/rafl/devel-changepackage,, либо из ближайшего к вам зеркала CPAN, как только они обновятся.

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