我有一些自动生成的代码,它们在一些代码的不同位置有效地写出以下内容:
no warnings 'uninitialized';
local %ENV = %ENV;
local $/ = $/;
local @INC = @INC;
local %INC = %INC;
local $_ = $_;
local $| = $|;
local %SIG = %SIG;
use warnings 'uninitialized';
在自动生成代码时,一些人认为代码“漂亮”并不是绝对必要的,但我想把它拉到一个子程序中。但是,这会将这些变量本地化在该子例程中。有没有办法在调用堆栈帧中本地化这些变量?
更新:以类似的方式,能够在更高的堆栈帧中运行 eval 会很好。我认为 Python 已经有了这个。如果 Perl 也这样做,那就太好了。