Ich habe einige automatisch generierten Code, der aus den folgenden in einer Reihe von verschiedenen Orten in einigen Code effektiv schreibt:Wie kann ich Perl-Variablen in einem anderen Stapelrahmen lokalisieren?
no warnings 'uninitialized';
local %ENV = %ENV;
local $/ = $/;
local @INC = @INC;
local %INC = %INC;
local $_ = $_;
local $| = $|;
local %SIG = %SIG;
use warnings 'uninitialized';
Wenn Auto-Code generieren, einige argumentieren, dass es der Code "nicht unbedingt notwendig ist, dass schön ", aber ich möchte das in eine Unterroutine herausziehen. Dies würde jedoch die Variablen in dieser Subroutine lokalisieren. Gibt es eine Möglichkeit, diese Variablen im aufrufenden Stack-Frame zu lokalisieren?
Update: In ähnlicher Weise wäre es schön, Eval in einem höheren Stack-Frame ausführen zu können. Ich denke, Python hat das schon. Es wäre schön, wenn auch Perl es wäre.
Sind Sie sicher, dass Sie das in Python gesehen haben? Tcl's 'Uplevel' kommt mir in den Sinn. Aber Hextens Antwort ist sowieso viel besser. – cfi