Alt shell proksini Perl-ə geri ixrac edə bilməz
Perl-in ENV dəyişənini birbaşa təyin edin və proksi dəyişənlərini bir alt çağırış ətrafında local ilə məhdudlaşdırın ki, əvvəlki dəyərlər sonra qayıtsın.
İçində export olan backtick əmri yalnız həmin əmr üçün yaradılmış shell-i dəyişir. Shell çıxdıqda valideyn Perl prosesi hələ də əvvəlki mühitini saxlayır.
Əvəzində Perl-in mühit hash-ını təyin edin. local dəyişikliyi bir blok daxilində saxlaya bilər:
{
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;
}
Alt proses local edilmiş dəyərləri miras alır. Açıq HTTP yükləməsi üçün HTTP proksi siyahısındakı bir son nöqtə həmin URL dəyərlərini verə bilər. Blok bitdikdə Perl əvvəlki qeydləri, o cümlədən onların əvvəlki yoxluğunu bərpa edir. Göstərilən system nəticəsi Perl-in proses statusudur, açılmış HTTP cavab kodu deyil.
local dinamik əhatəyə malikdir: həmin blok daxilində çağırılan digər Perl kodu da müvəqqəti mühiti görə bilər. Bu, funksiya üzrə şəxsi etimad məlumatı anbarı deyil.
Seçilmiş müştəri üçün miras alınan böyük hərfli və bypass dəyişənlərini nəzərdən keçirin. Hansı girişlərin istifadə olunacağına yükləyici qərar verir. Proksi parametri də prosesin istifadəçi kimliyini dəyişmir və yalnız miras alınması üçün ayrıca root shell tələb etmir.