У меня есть некоторые автоматически сгенерированный код, который эффективно выписывает следующий в куче разных мест, в каком-то коде:Как я могу локализовать переменные Perl в другом стеке стека?
no warnings 'uninitialized';
local %ENV = %ENV;
local $/ = $/;
local @INC = @INC;
local %INC = %INC;
local $_ = $_;
local $| = $|;
local %SIG = %SIG;
use warnings 'uninitialized';
При автоматической генерации кода, некоторые утверждают, что это не является строго необходимым, чтобы быть кодом " красиво ", но я хотел бы вытащить это в подпрограмму. Однако это локализует эти переменные в этой подпрограмме. Есть ли способ локализовать эти переменные в фрейме вызывающего стека?
Обновление: В аналогичном ключе было бы неплохо иметь возможность запускать eval в более высоком стеке стека. Я думаю, что у Python уже есть это. Было бы неплохо, если бы и Перл тоже.
Вы уверены, что видели это на Python? Tcl `uplevel` приходит в голову. Но ответ Хектена намного лучше. – cfi 2012-01-11 14:20:32