’n Backtick-opdrag met export verander net die skulp wat vir daardie opdrag geskep word. Wanneer die skulp sluit, hou die ouer Perl-proses steeds sy vorige omgewing.

Stel eerder Perl se omgewingshash. local kan die wysiging binne een blok hou:

{
    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;
}

Die kind erf die gelokaliseerde waardes. Vir ’n openbare HTTP-aflaai kan ’n eindpunt uit die HTTP-proxylys daardie URL-waardes lewer. Wanneer die blok eindig, herstel Perl die vorige inskrywings, ook hul vroeëre afwesigheid. Die system-uitset wat gewys word, is Perl se prosesstatus, nie ’n gedekodeerde HTTP-antwoordkode nie.

local is dinamies gegrens: ander Perl-kode wat binne daardie blok geroep word, sien ook die tydelike omgewing. Dit is nie ’n privaat bewaarplek vir geloofsbriewe per funksie nie.

Gaan die oorgeërfde hoofletter- en bypass-veranderlikes vir die gekose kliënt na. Die aflaaier besluit watter insette dit gebruik. ’n Proxy-instelling verander ook nie die proses se gebruikersidentiteit nie en vereis nie ’n aparte root-skulp net om oorgeërf te word nie.

Verwante artikels