Bola shell proksini Perle qaytarib eksport qila olmaydi
Perl ENV ni to'g'ridan-to'g'ri o'rnating va proksi o'zgaruvchilarini bitta bola chaqiruvi atrofida local bilan cheklang, shunda asl qiymatlar keyin qaytadi.
Ichida export bo'lgan backtick buyrug'i faqat shu buyruq uchun yaratilgan shellni o'zgartiradi. Shell chiqqanda, ota Perl jarayoni hali ham avvalgi muhitini saqlaydi.
Buning o'rniga Perl muhit hashini o'rnating. local o'zgarishni bitta blok ichida ushlab turishi mumkin:
{
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;
}
Bola local qilingan qiymatlarni meros oladi. Ommaviy HTTP yuklab olish uchun HTTP proksi ro'yxatidagi oxirgi nuqta o'sha URL qiymatlarini taqdim etishi mumkin. Blok tugaganda Perl avvalgi yozuvlarni, ularning avval yo'qligini ham qo'shib, tiklaydi. Ko'rsatilgan system natijasi Perl jarayonining holati, dekodlangan HTTP javob kodi emas.
local dinamik qamrovga ega: shu blok ichida chaqirilgan boshqa Perl kodi ham vaqtinchalik muhitni ko'radi. Bu har bir funksiya uchun shaxsiy hisob ma'lumotlari ombori emas.
Tanlangan mijoz uchun meros qilingan katta harf va bypass o'zgaruvchilarini ko'rib chiqing. Qaysi kirishlarni ishlatishni yuklovchi hal qiladi. Proksi sozlamasi ham jarayonning foydalanuvchi identifikatorini o'zgartirmaydi va faqat meros bo'lishi uchun alohida root shell talab qilmaydi.