1#!/usr/bin/perl 2 3use strict; 4use warnings; 5 6require q(./test.pl); plan(tests => 2); 7 8=pod 9 10This tests the successful handling of a next::method call from within an 11anonymous subroutine. 12 13=cut 14 15{ 16 package AA; 17 use mro 'c3'; 18 19 sub foo { 20 return 'AA::foo'; 21 } 22 23 sub bar { 24 return 'AA::bar'; 25 } 26} 27 28{ 29 package BB; 30 use base 'AA'; 31 use mro 'c3'; 32 33 sub foo { 34 my $code = sub { 35 return 'BB::foo => ' . (shift)->next::method(); 36 }; 37 return (shift)->$code; 38 } 39 40 sub bar { 41 my $code1 = sub { 42 my $code2 = sub { 43 return 'BB::bar => ' . (shift)->next::method(); 44 }; 45 return (shift)->$code2; 46 }; 47 return (shift)->$code1; 48 } 49} 50 51is(BB->foo, "BB::foo => AA::foo", 52 'method resolved inside anonymous sub'); 53 54is(BB->bar, "BB::bar => AA::bar", 55 'method resolved inside nested anonymous subs'); 56 57 58