Infana ŝelo ne povas eksporti prokurilon reen en Perl
Agordu la ENV de Perl rekte kaj limigu prokurajn variablojn per local ĉirkaŭ unu infana alvoko, por ke la originaj valoroj revenu poste.
Backtick-komando enhavanta export ŝanĝas nur la ŝelon kreitan por tiu komando. Kiam la ŝelo finiĝas, la gepatra Perl-procezo ankoraŭ havas sian antaŭan medion.
Anstataŭe agordu la medihashon de Perl. local povas teni la ŝanĝon ene de unu bloko:
{
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;
}
La infano heredas la lokaligitajn valorojn. Por publika HTTP-elŝuto, finpunkto el la HTTP-prokurila listo povas doni tiujn URL-valorojn. Kiam la bloko finiĝas, Perl restarigas la antaŭajn enskribojn, inkluzive de ilia antaŭa manko. La montrata system-rezulto estas procesa stato de Perl, ne malĉifrita HTTP-respondkodo.
local havas dinamilan amplekson: alia Perl-kodo vokata ene de tiu bloko ankaŭ vidas la provizoran medion. Ĝi ne estas privata akreditaĵa konservejo por ĉiu funkcio.
Reviziu heredajn majusklojn kaj pretervojojn por la elektita kliento. La elŝutilo decidas kiujn enigojn ĝi konsumas. Prokura agordo ankaŭ ne ŝanĝas la uzantidenton de la procezo nek postulas apartan root-ŝelon nur por esti heredata.