home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _c0bc125661d9fadffb124f2a04e25f80 < prev    next >
Text File  |  2000-03-15  |  1KB  |  43 lines

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