சைல்ட் ஷெல் ப்ராக்ஸியை மீண்டும் 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 ஷெல்லும் தேவையில்லை.