You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.1 KiB
50 lines
1.1 KiB
# Stash.pm -- show what stashes are loaded
|
|
# [email protected]
|
|
package B::Stash;
|
|
|
|
=pod
|
|
|
|
=head1 NAME
|
|
|
|
B::Stash - show what stashes are loaded
|
|
|
|
=cut
|
|
|
|
BEGIN { %Seen = %INC }
|
|
|
|
CHECK {
|
|
my @arr=scan($main::{"main::"});
|
|
@arr=map{s/\:\:$//;$_ eq "<none>"?():$_;} @arr;
|
|
print "-umain,-u", join (",-u",@arr) ,"\n";
|
|
}
|
|
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 unless omit($prefix.$key);
|
|
foreach my $subscan ( scan(${$start}{$key},$prefix.$key)){
|
|
push @return, "$key".$subscan;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return @return;
|
|
}
|
|
sub omit{
|
|
my $module = shift;
|
|
my %omit=("DynaLoader::" => 1 , "XSLoader::" => 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;
|