http://qs321.pair.com?node_id=892994


in reply to How to localize conditionally?

local $ENV{BLAH} = condition ? 42 : $ENV{BLAH};

Replies are listed 'Best First'.
Re^2: How to localize conditionally?
by ikegami (Patriarch) on Mar 14, 2011 at 14:28 UTC
    The library checks for existence, so that doesn't work. You'd need
    local %ENV = condition ? (%ENV, BLAH=>42) : %ENV;

      Did you test it? It works for me.

      - tye        

        No, but how can one assign to a hash element that does not exist? Well, %ENV is magical, so let's test it out.

        $ perl -wE' my $condition = 0; say exists($ENV{BLAH}) || 0; local $ENV{BLAH} = $condition ? 42 : $ENV{BLAH}; say exists($ENV{BLAH}) || 0; ' 0 1

        So I was right

        This is perl 5, version 12, subversion 2 (v5.12.2) built for i686-linu +x