#### untested #### package Test::Without::Module; use constant REQUIRE_ERROR => q/Can't locate %s.pm in @INC (@INC contains: %s)/; my @dont_load_rx; sub import { my $class = shift; push @dont_load_rx, map qr/$_/, @_; } # prototype("CORE::require") eq ";$" *CORE::GLOBAL::require = sub (;$) { local $_ = $_[0]; for my $forbidden (@dont_load) { /$forbidden/ or next; s!::!/!; # possibly OS dependent? require Carp; Carp::croak(sprintf REQUIRE_ERROR, $_, "@INC"); } goto CORE::require; }; 1;