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 शेल की आवश्यकता भी नहीं होती।

संबंधित लेख