Tôi có một số mã tự động tạo ra mà hiệu quả viết ra sau trong một loạt các địa điểm khác nhau ở một số mã:Làm thế nào tôi có thể bản địa hóa các biến Perl trong một khung ngăn xếp khác nhau?
no warnings 'uninitialized';
local %ENV = %ENV;
local $/ = $/;
local @INC = @INC;
local %INC = %INC;
local $_ = $_;
local $| = $|;
local %SIG = %SIG;
use warnings 'uninitialized';
Khi mã tự động tạo ra, một số người cho rằng nó không thực sự cần thiết rằng mã là " đẹp ", nhưng tôi muốn lôi nó ra thành một chương trình con. Tuy nhiên, điều đó sẽ bản địa hóa các biến đó trong chương trình con đó. Có cách nào để bản địa hóa các biến đó trong khung ngăn xếp gọi không?
Cập nhật: Trong một mạch tương tự, sẽ tốt hơn nếu có thể chạy eval trong khung ngăn xếp cao hơn. Tôi nghĩ rằng Python đã có điều này. Sẽ tốt hơn nếu Perl cũng vậy.
Bạn có chắc chắn bạn đã thấy điều này bằng Python không? Tenc's 'uplevel' xuất hiện trong đầu. Nhưng câu trả lời của hexten là tốt hơn nhiều anyway .. – cfi