#!/usr/bin/env perl use strict; #use warnings; use 5.020; sub function { say "at function:$ENV{THIS}"; } sub main { say "at main before setting:$ENV{THIS}"; local $ENV{THIS} = 'THAT'; say "at main after setting:$ENV{THIS}"; function(); say "at main after function:$ENV{THIS}"; return 0; } say "before main:$ENV{THIS}"; main(@ARGV); say "after main:$ENV{THIS}"; __END__ Output: $ ./local.pl before main: at main before setting: at main after setting:THAT at function:THAT at main after function:THAT after main: