פקודת backtick שמכילה export משנה רק את המעטפת שנוצרה עבור אותה פקודה. כשהמעטפת מסתיימת, לתהליך האב של Perl עדיין יש את הסביבה הקודמת שלו.

הגדירו במקום זאת את hash הסביבה של 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;
}

הילד יורש את הערכים המוגבלים. עבור הורדת HTTP ציבורית, נקודת קצה מתוך רשימת פרוקסי HTTP יכולה לספק את ערכי ה-URL האלה. כשהבלוק מסתיים, Perl משחזר את הרשומות הקודמות, כולל היעדרן הקודם. תוצאת system המוצגת היא מצב התהליך של Perl, ולא קוד תגובת HTTP מפוענח.

ל-local יש תחום דינמי: קוד Perl אחר שנקרא בתוך אותו בלוק רואה גם הוא את הסביבה הזמנית. זה אינו מאגר סודות פרטי לכל פונקציה.

בדקו את המשתנים בירושה באותיות גדולות ואת משתני העקיפה עבור הלקוח הנבחר. המוריד מחליט אילו קלטים הוא צורך. הגדרת פרוקסי גם אינה משנה את זהות המשתמש של התהליך ואינה מחייבת מעטפת root נפרדת רק כדי לעבור בירושה.

מאמרים קשורים