لا يمكن لصدفة فرعية تصدير بروكسي إلى Perl
اضبط ENV في Perl مباشرة وقيّد متغيرات البروكسي بـ local حول استدعاء فرعي واحد لتعود القيم الأصلية بعد ذلك.
أمر backtick يحتوي على export يغيّر الصدفة التي أُنشئت لذلك الأمر فقط. وعندما تنتهي الصدفة، تظل عملية Perl الأصلية محتفظة ببيئتها السابقة.
اضبط تجزئة البيئة في Perl بدلًا من ذلك. يمكن لـ local أن يبقي التغيير داخل كتلة واحدة:
{
local $ENV{http_proxy} = 'http://proxy.example:8080';
local $ENV{https_proxy} = 'http://proxy.example:8080';
my $status = system {
'/usr/bin/curl'
} '/usr/bin/curl', '--fail', '--max-time', '30',
'https://downloads.example/data.csv';
die "Downloader failed: $status" if $status != 0;
}
ترث العملية الفرعية القيم المقيّدة. ولتنزيل HTTP عام، يمكن لنقطة نهاية من قائمة بروكسي HTTP أن توفّر قيم URL هذه. وعندما تنتهي الكتلة، تعيد Perl المدخلات السابقة، بما في ذلك غيابها السابق. وما يُعرض من نتيجة system هو حالة عملية Perl، لا رمز استجابة HTTP مفكوك.
local ذو نطاق ديناميكي: أي كود Perl آخر يُستدعى داخل تلك الكتلة يمكنه أيضًا رؤية البيئة المؤقتة. وهو ليس مخزنًا خاصًا للبيانات السرية لكل دالة.
راجع المتغيرات الموروثة بأحرف كبيرة ومتغيرات التجاوز للعميل المختار. فالبرنامج المنزّل هو من يقرر المدخلات التي يستخدمها. كما أن إعداد البروكسي لا يغيّر هوية مستخدم العملية ولا يستلزم صدفة root منفصلة لمجرد وراثته.