package RequireHookTest; use 5.032; use warnings; use Moose; use namespace::autoclean; sub dynamic_require { my ($self, $ns_extension) = @_; { my $class = join '::', __PACKAGE__, $ns_extension; my $source = <<~EOF; package $class; use Moose; extends 'RequireHookTest'; use namespace::autoclean; __PACKAGE__->meta->make_immutable; 1; EOF my sub for_inc { my ($coderef, $filename) = @_; return \$source }; my $for_inc_ref = \&for_inc; push @INC, $for_inc_ref; eval "require $class;"; } return; } __PACKAGE__->meta->make_immutable; 1;