On Fri, Jul 22, 2005 at 03:16:29PM -0500, Scott Bolte wrote:
On Thu, 21 Jul 2005 00:14:51 -0700, Michael G Schwern wrote:
Its gotta be something about _default_inc(). Nothing looks wrong from
here. My only guess is that local $ENV{PERL5LIB} is ineffective. That
would account for the alternation.
It's not just the local scoping. There is something
seriously unexpected with environment variables, perl
and cygwin.
----- th4.pl
#!/usr/bin/perl
use strict;
use warnings;
$ENV{SHOULD_NEVER_BE_SEEN} = "hello world";
delete($ENV{SHOULD_NEVER_BE_SEEN});
system("printenv | grep SHOULD_NEVER_BE_SEEN");
On UNIX systems that script properly prints nothing. Not so
on my cygwin (on top of XP) system:
cygwin% perl ~/th4.pl
SHOULD_NEVER_BE_SEEN=hello world
It seems to imply that the results of unsetenv(3) are not
persistent across an exec(2).
....or that perl isn't using unsetenv, since AFAICT, unsetenv() is operating
as it should for both cygwin and non-cygwin processes.
This was a standard problem way way back when I was maintaining my own
version of perl for cygwin (since cygwin didn't include perl). There was
special code in perl to deal with cygwin's environment, IIRC. Maybe it's
broken in 5.8.7.
cgf