Un shell enfant ne peut pas exporter un proxy vers Perl
Définissez l'ENV de Perl directement et localisez les variables de proxy autour d'un seul appel enfant pour que les valeurs d'origine reviennent ensuite.
Une commande en backtick contenant export ne modifie que le shell créé pour cette commande. Quand le shell se termine, le processus Perl parent conserve son environnement précédent.
Définissez plutôt le hachage d'environnement de Perl. local peut garder la modification dans un seul 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;
}
L'enfant hérite des valeurs localisées. Pour un téléchargement HTTP public, un point de terminaison de la liste de proxies HTTP peut fournir ces valeurs d'URL. À la fin du bloc, Perl restaure les entrées précédentes, y compris leur absence antérieure. Le résultat système affiché est le statut du processus Perl, non un code de réponse HTTP décodé.
local a une portée dynamique : tout autre code Perl appelé dans ce bloc voit aussi l'environnement temporaire. Ce n'est pas un magasin d'informations d'identification privé par fonction.
Vérifiez les variables héritées en majuscules et de contournement pour le client choisi. C'est le téléchargeur qui décide quelles entrées il consomme. Un réglage de proxy ne change pas non plus l'identité utilisateur du processus et n'exige pas un shell root séparé simplement pour être hérité.