-----Original Message-----
From: perl-win32-users-boun...@listserv.activestate.com
[mailto:perl-win32-users-boun...@listserv.activestate.com] On Behalf Of
Chris Wagner
Sent: 23 February 2011 14:25
To: perl-win32-users@listserv.activestate.com
Subject: Re: spurious deaths in script execution due to read-only
Config?

> It's the standard behavior of Perl.
>
> use Data::Dump "pp"; 
> %a = qw/x 1 y 1 z 1/;
> grep { $_ } $a{bob};
> pp %a;
> ^D
> ("y", 1, "bob", undef, "x", 1, "z", 1)
>
>
> At 02:18 PM 2/22/2011 +0100, Christian Walde wrote:
> >On Tue, 22 Feb 2011 13:46:55 +0100, Chris Wagner
<wagn...@plebeian.com> wrote:
> >> At 08:54 PM 2/21/2011 +0100, Christian Walde wrote:
> >>>      use Config;
> >>>      # print 1 if $Config{foo}; # enabling this removes the crash
> >>>      grep { $_ } $Config{bar}; # this crashes
> >>>
> >>> These two lines on their own will cause ActivePerl of any version
to exit
> >>> with the error message above.
> >>Hi.  U can't do that because Perl must autovivify $Config{bar} in
order to
> >> have a value to put into $_.  HTH.
> >
> >Good guess, that's almost what happens. The problem happens a bit
deeper in
> the guts and is actually caused by Exporter.pm, where it tries to do
local
> $_ and by doing so triggers autovivification. (grep/map only do an
aliasing
> of %Config to $_, which is fine.)
> >
>> I remembered this morning that there is a bug tracker for ActivePerl,
> started to write up an error report and in doing so ended up
formulating a
> possible for for ActiveState:
http://bugs.activestate.com/show_bug.cgi?id=89447

While autovivication is part of Perl's normal behaviour, I'm not sure
that it is cause of this problem. The fact that un-commenting the line
before the grep in the OP's code makes the problem go away tends to
confirm this.

I suspect that it is related to the Activestate overriding of Config
('use diagnostics' will give a stack trace) but I can't see how it
causes that error, i.e. "%Config::Config is read-only".

Note that inhibiting the activestate override
($ENV{ACTIVEPERL_CONFIG_DISABLE} = 1) also seems to make the problem go
away.

Maybe somebody from Activestate has a clue.

HTH


-- 
Brian Raven 
 
Please consider the environment before printing this e-mail.

This e-mail may contain confidential and/or privileged information. If you are 
not the intended recipient or have received this e-mail in error, please advise 
the sender immediately by reply e-mail and delete this message and any 
attachments without retaining a copy.

Any unauthorised copying, disclosure or distribution of the material in this 
e-mail is strictly forbidden.
_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to