-----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