use Devel::Symdump; my $x = Mod::idx('some string'); print "x=$x\n"; # works, x=5 my $obj = Devel::Symdump->new('Mod'); # crash on 5.10 package Mod; use constant 'STRING' => 'string'; sub idx { my $s = shift; return index($s, STRING); } #### local(*ENTRY) = $val; #### if ($symtab && !exists $symtab->{$name}) { # No typeglob yet, so we can use a reference as space- # efficient proxy for a constant subroutine # The check in Perl_ck_rvconst knows that inlinable # constants from cv_const_sv are read only. So we have to: Internals::SvREADONLY($scalar, 1); $symtab->{$name} = \$scalar; mro::method_changed_in($pkg); } else { *$full_name = sub () { $scalar }; } #### index($s, scalar STRING)