export duen backtick komando batek komando horretarako sortutako shell-a soilik aldatzen du. Shell-a amaitzean, guraso Perl prozesuak oraindik ere aurreko ingurunea du.

Ezarri horren ordez Perl-en ingurune hash-a. local-ek aldaketa bloke bakarrean gorde dezake:

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

Semeak lokalizatutako balioak heredatzen ditu. HTTP deskarga publiko baterako, HTTP proxy zerrendako mutur batek URL balio horiek eman ditzake. Blokea amaitzean, Perl-ek aurreko sarrerak leheneratzen ditu, haien aurreko ezetza barne. Erakutsitako system emaitza Perl-en prozesu egoera da, ez deskodetutako HTTP erantzun kodea.

local-ek esparru dinamikoa du: bloke horren barruan deitutako beste Perl kodeak ere ingurune aldi baterakoa ikusten du. Ez da funtzio bakoitzeko kredentzial biltegi pribatua.

Berrikusi hautatutako bezeroarentzat heredatutako letra larrizko eta saihesbide aldagaiak. Deskargatzailerak erabakitzen du zein sarrera erabiltzen dituen. Proxy ezarpenak ere ez du prozesuaren erabiltzaile identitatea aldatzen eta ez du root shell bereizi bat behar soilik heredatzeko.

Erlazionatutako artikuluak