ചൈൽഡ് ഷെല്ലിന് പ്രോക്സി Perl-ലേക്ക് തിരികെ എക്സ്പോർട്ട് ചെയ്യാനാകില്ല
Perl-ന്റെ ENV നേരിട്ട് സജ്ജമാക്കി ഒരു ചൈൽഡ് കോളിന് ചുറ്റും local ഉപയോഗിച്ച് പ്രോക്സി വേരിയബിളുകൾ പരിമിതപ്പെടുത്തുക, അപ്പോൾ പഴയ മൂല്യങ്ങൾ പിന്നീട് തിരികെ വരും.
export അടങ്ങിയ backtick കമാൻഡ് ആ കമാൻഡിനായി സൃഷ്ടിച്ച ഷെല്ലിനെ മാത്രമാണ് മാറ്റുന്നത്. ഷെൽ പുറത്തുപോകുമ്പോൾ മാതൃ Perl പ്രോസസ്സിന് ഇപ്പോഴും അതിന്റെ മുൻ പരിസ്ഥിതി ഉണ്ട്.
പകരം Perl-ന്റെ എൻവയോൺമെന്റ് ഹാഷ് സജ്ജമാക്കുക. 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 ഷെല്ലും ആവശ്യപ്പെടുന്നില്ല.