我有一些自动生成的代码,有效地写出在一些代码一堆不同的地方如下:如何在不同的堆栈框架中定位Perl变量?
no warnings 'uninitialized';
local %ENV = %ENV;
local $/ = $/;
local @INC = @INC;
local %INC = %INC;
local $_ = $_;
local $| = $|;
local %SIG = %SIG;
use warnings 'uninitialized';
当自动生成代码,一些人认为,这不是绝对必要的代码是“美丽的“,但我想把它列入子程序。但是,这将在那个子程序中定位这些变量。有没有办法在调用堆栈框架中定位这些变量?
更新:在类似的情况下,能够在更高的堆栈帧中运行eval会很好。我认为Python已经有了。如果Perl也这样做,那将会很好。
您确定您在Python中看到了这个吗?记得Tcl的'uplevel'。但是,无论如何,hexten的答案要好得多。 – cfi 2012-01-11 14:20:32