Plan 9 from Bell Labs’s /usr/web/sources/contrib/gabidiaz/root/sys/src/cmd/perl/lib/B/Stash.pm

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


# Stash.pm -- show what stashes are loaded
# [email protected] 
package B::Stash;

our $VERSION = '1.00';

=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;

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].