1# Stash.pm -- show what stashes are loaded 2# vishalb@hotmail.com 3package B::Stash; 4 5our $VERSION = '1.00'; 6 7=pod 8 9=head1 NAME 10 11B::Stash - show what stashes are loaded 12 13=cut 14 15BEGIN { %Seen = %INC } 16 17CHECK { 18 my @arr=scan($main::{"main::"}); 19 @arr=map{s/\:\:$//;$_ eq "<none>"?():$_;} @arr; 20 print "-umain,-u", join (",-u",@arr) ,"\n"; 21} 22sub scan{ 23 my $start=shift; 24 my $prefix=shift; 25 $prefix = '' unless defined $prefix; 26 my @return; 27 foreach my $key ( keys %{$start}){ 28# print $prefix,$key,"\n"; 29 if ($key =~ /::$/){ 30 unless ($start eq ${$start}{$key} or $key eq "B::" ){ 31 push @return, $key unless omit($prefix.$key); 32 foreach my $subscan ( scan(${$start}{$key},$prefix.$key)){ 33 push @return, "$key".$subscan; 34 } 35 } 36 } 37 } 38 return @return; 39} 40sub omit{ 41 my $module = shift; 42 my %omit=("DynaLoader::" => 1 , "XSLoader::" => 1, "CORE::" => 1 , 43 "CORE::GLOBAL::" => 1, "UNIVERSAL::" => 1 ); 44 return 1 if $omit{$module}; 45 if ($module eq "IO::" or $module eq "IO::Handle::"){ 46 $module =~ s/::/\//g; 47 return 1 unless $INC{$module}; 48 } 49 50 return 0; 51} 521; 53