Ang backtick na utos na may export ay binabago lamang ang shell na ginawa para sa utos na iyon. Kapag lumabas ang shell, ang parent Perl na proseso ay mayroon pa rin ng dati nitong kapaligiran.

Sa halip, itakda ang environment hash ng Perl. Maaaring panatilihin ng local ang pagbabago sa loob ng isang bloke:

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

Minamana ng anak ang mga lokal na halaga. Para sa pampublikong pag-download ng HTTP, ang isang endpoint mula sa listahan ng HTTP proxy ay makapagbibigay ng mga halagang URL na iyon. Kapag nagtapos ang bloke, ibinabalik ng Perl ang mga naunang entry, kabilang ang dati nilang kawalan. Ang ipinapakitang resulta ng system ay ang status ng proseso ng Perl, hindi ang na-decode na HTTP response code.

May dinamikong saklaw ang local: nakikita rin ng ibang Perl code na tinatawag sa loob ng bloke na iyon ang pansamantalang kapaligiran. Hindi ito pribadong imbakan ng kredensyal bawat function.

Suriin ang minanang uppercase at bypass na mga variable para sa napiling client. Ang downloader ang nagpapasya kung aling mga input ang ginagamit nito. Hindi rin binabago ng proxy setting ang pagkakakilanlang user ng proseso at hindi nangangailangan ng hiwalay na root shell para lamang manahin.

Kaugnay na mga artikulo