This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make <~> work again under miniperl
authorFather Chrysostomos <sprout@cpan.org>
Mon, 24 Oct 2011 13:14:31 +0000 (06:14 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 24 Oct 2011 13:15:07 +0000 (06:15 -0700)
commit93b2dae14541cd2bc39e2d4b1bb5f0cc2c0ef0c7
treefcd31000dcf19da71fc0aba7ec82bbfb647e2707
parente27aa02b637769bf2276f7915bcaceba353e4a2e
Make <~> work again under miniperl

Commit a3342be368 localised %ENV before calling csh for glob.  But
that causes <~> to stop working.  So this commit clears out %ENV
*except* for $ENV{HOME}.

It relies on the way magic works:  Before localising the %ENV hash, it
retrieves its $ENV{HOME} element, which is a magical scalar.  It calls
get-magic to store the value in the scalar itself, localises %ENV, and
then calls set-magic on the element, to signal (deceitfully) that an assignment has just happened.  So the cached value in the magical sca-
lar is used and assigned to the env var.
doio.c
t/op/glob.t