Christopher Faylor wrote:
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
Indeed, I see no unsetenv() in the perl sources.
Since it seems that the problem is independent of TH the problem should
be located in perl itself. I'll try with a recent devel version to see
if it fails here too. Scott, have you tried te above script with other
(older) versions of Cygwin perl too? Since TH works with perl-5.8.6 I
suspect some of the changes integrated into maint perl to be problematic
for Cygwin, however it may also be an older bug in Cygwin perl.
Gerrit
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/