చైల్డ్ షెల్ ప్రాక్సీని తిరిగి Perl లోకి ఎగుమతి చేయలేదు
Perl యొక్క ENV ను నేరుగా సెట్ చేసి, ఒక చైల్డ్ కాల్ చుట్టూ local తో ప్రాక్సీ వేరియబుల్స్ను పరిమితం చేయండి, తద్వారా అసలు విలువలు తర్వాత తిరిగి వస్తాయి.
export ఉన్న backtick ఆదేశం ఆ ఆదేశం కోసం సృష్టించిన షెల్ను మాత్రమే మారుస్తుంది. షెల్ నిష్క్రమించినప్పుడు పేరెంట్ Perl ప్రక్రియ ఇప్పటికీ దాని మునుపటి పరిసరాన్ని కలిగి ఉంటుంది.
బదులుగా Perl యొక్క పరిసర hash ను సెట్ చేయండి. local మార్పును ఒక బ్లాక్ లోపల ఉంచగలదు:
{
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;
}
చైల్డ్ local చేసిన విలువలను వారసత్వంగా పొందుతుంది. పబ్లిక్ HTTP డౌన్లోడ్ కోసం HTTP ప్రాక్సీ జాబితా నుండి ఒక ఎండ్పాయింట్ ఆ URL విలువలను అందించగలదు. బ్లాక్ ముగిసినప్పుడు Perl మునుపటి ఎంట్రీలను, వాటి మునుపటి లేమిని కూడా కలిపి, పునరుద్ధరిస్తుంది. చూపించే system ఫలితం Perl యొక్క ప్రక్రియ స్థితి, డీకోడ్ చేసిన HTTP ప్రతిస్పందన కోడ్ కాదు.
local కి చలన పరిధి ఉంది: ఆ బ్లాక్ లోపల పిలిచే ఇతర Perl కోడ్ కూడా తాత్కాలిక పరిసరాన్ని చూస్తుంది. ఇది ప్రతి ఫంక్షన్కు ప్రైవేట్ ఆధారాల నిల్వ కాదు.
ఎంచుకున్న క్లయింట్ కోసం వారసత్వంగా వచ్చే పెద్ద అక్షరాలు మరియు బైపాస్ వేరియబుల్స్ను సమీక్షించండి. ఏ ఇన్పుట్లను ఉపయోగించాలో డౌన్లోడర్ నిర్ణయిస్తుంది. ప్రాక్సీ సెట్టింగ్ ప్రక్రియ యొక్క వినియోగదారు గుర్తింపును కూడా మార్చదు మరియు వారసత్వంగా పొందడానికి మాత్రమే ప్రత్యేక root షెల్ అవసరం లేదు.