http://www.perlmonks.org?node_id=666630


in reply to Re^4: What Just Happened to my CPAN Shell?
in thread What Just Happened to my CPAN Shell?

I can report that after upgrade to Safe 2.15 that the problem still exists.

Nice. Your perl is 5.8.8? Could you please try the following test script?

use warnings; use strict; use Safe; use version; my $comp = Safe->new; # never using it! my $code = <<'EOT'; use version; qv('3.0.17'); EOT my $ret = eval($code); print "$ret"; # should stringify the version

On my system with Safe 2.14 the script produces a SEGV:

$ perl test.pl Use of inherited AUTOLOAD for non-method version::(""() is deprecated +at test.pl line 13. Segmentation fault

But with Safe 2.15 it runs fine.

-- Frank

Replies are listed 'Best First'.
Re^6: What Just Happened to my CPAN Shell?
by eskwayrd (Acolyte) on Feb 06, 2008 at 21:10 UTC
    Yes, my perl is 5.8.8:
    $ perl -v This is perl, v5.8.8 built for x86_64-linux-gnu-thread-multi [...snip...]
    The test script segfaults as per your example. However:
    $ perl -MSafe -e 'print $Safe::VERSION, "\n"' 2.14
    I now have two Safe.pm's:

    2.14 is in /usr/local/lib/perl/5.8.8/Safe.pm
    2.15 is in /usr/lib/perl/5.8.8/Safe.pm

    @INC is:
    $ perl -MData::Dumper -e 'print Dumper(\@INC);' $VAR1 = [ '/etc/perl', '/usr/local/lib/perl/5.8.8', '/usr/local/share/perl/5.8.8', '/usr/lib/perl5', '/usr/share/perl5', '/usr/lib/perl/5.8', '/usr/share/perl/5.8', '/usr/local/lib/site_perl', '.' ];
    I'm not sure why there is a discrepancy (no difference in Makefile.PL between the two versions), although I installed 2.14 via the CPAN shell, and 2.15 via bash.

    When I upgrade the test script to 'use lib qw(/usr/lib/perl)' before 'use Safe', it does not segfault and emits:
    $ perl test.pl 3.0.17
      And subsequently, upgrading to Safe 2.15 via the CPAN shell causes the problem to go away, at least for two roundtrips of discovering modules with updates available, and installing the updates.