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


in reply to Scalar $ENV in a package

from "man perlvar"
       All Perl variables that begin with digits, control
       characters, or punctuation characters are exempt from the
       effects of the package declaration and are always forced
       to be in package main.  A few other names are also exempt:

               ENV             STDIN
               INC             STDOUT
               ARGV            STDERR
               ARGVOUT
               SIG
so adding
print "\$main::ENV = '$main::ENV'\n";
you get
$main::ENV = '2'
as expected...