我有一些自動生成的代碼,有效地寫出在一些代碼一堆不同的地方如下:如何在不同的堆棧框架中定位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