ਚਾਈਲਡ ਸ਼ੈੱਲ ਪ੍ਰੌਕਸੀ ਨੂੰ ਵਾਪਸ Perl ਵਿੱਚ ਨਿਰਯਾਤ ਨਹੀਂ ਕਰ ਸਕਦਾ
Perl ਦੀ ENV ਸਿੱਧੀ ਸੈੱਟ ਕਰੋ ਅਤੇ ਇੱਕ ਚਾਈਲਡ ਕਾਲ ਦੇ ਆਲੇ-ਦੁਆਲੇ local ਨਾਲ ਪ੍ਰੌਕਸੀ ਵੇਰੀਏਬਲ ਸੀਮਿਤ ਕਰੋ ਤਾਂ ਜੋ ਮੂਲ ਮੁੱਲ ਬਾਅਦ ਵਿੱਚ ਵਾਪਸ ਆ ਜਾਣ।
export ਵਾਲਾ ਬੈਕਟਿਕ ਕਮਾਂਡ ਸਿਰਫ਼ ਉਸੇ ਕਮਾਂਡ ਲਈ ਬਣਾਏ ਗਏ ਸ਼ੈੱਲ ਨੂੰ ਬਦਲਦਾ ਹੈ। ਸ਼ੈੱਲ ਦੇ ਬਾਹਰ ਨਿਕਲਣ 'ਤੇ ਪੇਰੈਂਟ 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 ਸ਼ੈੱਲ ਵੀ ਨਹੀਂ ਲੋੜੀਂਦਾ।