}
sub scan{
my $start=shift;
+ my $prefix=shift;
+ $prefix = '' unless defined $prefix;
my @return;
foreach my $key ( keys %{$start}){
+# print $prefix,$key,"\n";
if ($key =~ /::$/){
unless ($start eq ${$start}{$key} or $key eq "B::" ){
- push @return, $key ;
- foreach my $subscan ( scan(${$start}{$key})){
+ push @return, $key unless omit($prefix.$key);
+ foreach my $subscan ( scan(${$start}{$key},$prefix.$key)){
push @return, "$key".$subscan;
}
}
}
return @return;
}
-1;
-
+sub omit{
+ my $module = shift;
+ my %omit=("DynaLoader::" => 1 , "CORE::" => 1 ,
+ "CORE::GLOBAL::" => 1, "UNIVERSAL::" => 1 );
+ return 1 if $omit{$module};
+ if ($module eq "IO::" or $module eq "IO::Handle::"){
+ $module =~ s/::/\//g;
+ return 1 unless $INC{$module};
+ }
+ return 0;
+}
+1;