sub dynamic_require {
my ($self, $ns_extension) = @_;
my $class = join '::', __PACKAGE__, $ns_extension;
my $source = <<~EOF;
package $class;
use parent 'MooselessRequireHookTest';
1;
EOF
push @INC, sub {
my ($coderef, $filename) = @_;
my $wanted_filename = $class =~ s{::}{/}gr . '.pm';
return unless $filename eq $wanted_filename;
return \$source;
};
eval "require $class;";
return;
}
####
$rht->dynamic_require('A::B::C');
my $rht_abc = MooselessRequireHookTest::A::B::C->new();
is(defined $rht_abc, 1, 'Test MooselessRequireHookTest::A::B::C->new()');
isa_ok($rht_abc, 'MooselessRequireHookTest::A::B::C', 'Test MooselessRequireHookTest::A::B::C->new() ISA');
##
##
warn "\$coderef[$coderef] \$filename[$filename]\n";
##
##
sscce_mooseless_require_hook_test.t ..
1..8
ok 1 - Test MooselessRequireHookTest::->new()
ok 2 - 'Test MooselessRequireHookTest::->new() ISA' isa 'MooselessRequireHookTest'
ok 3 - Test MooselessRequireHookTest::Test1->new()
ok 4 - 'Test MooselessRequireHookTest::Test1->new() ISA' isa 'MooselessRequireHookTest::Test1'
ok 5 - Test MooselessRequireHookTest::Test2->new()
ok 6 - 'Test MooselessRequireHookTest::Test2->new() ISA' isa 'MooselessRequireHookTest::Test2'
ok 7 - Test MooselessRequireHookTest::A::B::C->new()
ok 8 - 'Test MooselessRequireHookTest::A::B::C->new() ISA' isa 'MooselessRequireHookTest::A::B::C'
$coderef[CODE(0x60008aa00)] $filename[MooselessRequireHookTest/Test1.pm]
$coderef[CODE(0x60008aa00)] $filename[MooselessRequireHookTest/Test2.pm]
$coderef[CODE(0x600868c78)] $filename[MooselessRequireHookTest/Test2.pm]
$coderef[CODE(0x60008aa00)] $filename[MooselessRequireHookTest/A/B/C.pm]
$coderef[CODE(0x600868c78)] $filename[MooselessRequireHookTest/A/B/C.pm]
$coderef[CODE(0x60086da88)] $filename[MooselessRequireHookTest/A/B/C.pm]
ok
All tests successful.
Files=1, Tests=8, 0 wallclock secs ( 0.00 usr 0.03 sys + 0.08 cusr 0.03 csys = 0.14 CPU)
Result: PASS
##
##
/home/ken/tmp/pm_sscce_require_hook/lib
/home/ken/perl5/perlbrew/perls/perl-5.32.0/lib/site_perl/5.32.0/cygwin-thread-multi
/home/ken/perl5/perlbrew/perls/perl-5.32.0/lib/site_perl/5.32.0
/home/ken/perl5/perlbrew/perls/perl-5.32.0/lib/5.32.0/cygwin-thread-multi
/home/ken/perl5/perlbrew/perls/perl-5.32.0/lib/5.32.0
CODE(0x60008aa00)
CODE(0x600868c78)
CODE(0x60086da88)