Una shell filla no pot exportar un proxy cap a Perl
Definiu l'ENV de Perl directament i localitzeu les variables de proxy al voltant d'una invocació filla perquè els valors originals tornin després.
Una ordre amb accent obert que conté export només canvia la shell creada per a aquesta ordre. Quan la shell acaba, el procés Perl pare encara conserva el seu entorn anterior.
Definiu en el seu lloc el hash d'entorn de Perl. local pot mantenir el canvi dins d'un sol bloc:
{
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;
}
El fill hereta els valors localitzats. Per a una descàrrega HTTP pública, un punt final de la llista de proxys HTTP pot proporcionar aquests valors d'URL. Quan el bloc acaba, Perl restaura les entrades anteriors, fins i tot la seva absència prèvia. El resultat de system que es mostra és l'estat del procés de Perl, no un codi de resposta HTTP descodificat.
local té abast dinàmic: un altre codi Perl cridat dins d'aquell bloc també veu l'entorn temporal. No és un magatzem privat de credencials per funció.
Reviseu les variables heretades en majúscules i de bypass per al client triat. És el descarregador qui decideix quines entrades consumeix. Un paràmetre de proxy tampoc no canvia la identitat d'usuari del procés ni exigeix una shell root separada només per ser heretat.