use strict; use warnings; use Symbol qw(delete_package); my @pre_require = keys %INC; print "Modules pre-require: " . @pre_require . "\n"; require Devel::Examine::Subs; import Devel::Examine::Subs; my @post_require = keys %INC; # do something with imported module immediately after # getting the post-require %INC count ... print "Modules post-require: " . @post_require . "\n"; my $count = @post_require - @pre_require; print "Additional modules loaded: $count\n"; for my $file (@post_require){ if (! grep /$file/, @pre_require){ (my $module = $file ) =~ s/\//::/g; $module =~ s/\.pm$//; delete_package $module; delete $INC{$file}; } } __END__ Modules pre-require: 4 Modules post-require: 138 Additional modules loaded: 134 Module count post cleanup: 4