my $source = do { local(*ARGV, $/); @ARGV = $INC{'Util/Stuff.pm'}; <>; }; my @packages = $source =~ m/package\s+[_a-zA-Z][^\S;]*;/g; #### my $mod = Module::Info->new_from_module('Some::Module'); my @packages = $mod->packages_inside;