Sponsoring The Perl Toolchain Summit 2025: Help make this important event another success Learn more

## no critic qw(Capitalization ProhibitMultiplePackages ProhibitReusedNames) # SYSTEM DEFAULT 3: allow multiple & lower case package names
package # hide from PAUSE indexing
rperlnamespaces;
use strict;
our $VERSION = 0.002_000;
sub array {
my $namespaces = [];
for my $name ( sort keys %main:: ) {
my $glob = $main::{$name};
if ( (not ref $glob) and %{$glob} ) { # check glob ref to avoid "not a HASH reference" error on DUMMY code refs
push @{$namespaces}, $name;
}
}
return $namespaces;
}
sub hash {
# print 'in rperlnamespaces::hash(), top of subroutine', "\n";
my $namespaces = {};
for my $name ( sort keys %main:: ) {
my $glob = $main::{$name};
# print 'in rperlnamespaces::hash(), have ref $glob = ', ref $glob, "\n";
# print 'in rperlnamespaces::hash(), have $glob = ', Dumper($glob), "\n";
if ( (not ref $glob) and %{$glob} ) { # check glob ref to avoid "not a HASH reference" error on DUMMY code refs
$namespaces->{$name} = 1;
}
}
# print 'in rperlnamespaces::hash(), bottom of subroutine, about to return $namespaces = ', Dumper($namespaces), "\n";
return $namespaces;
}
sub hash_noncore {
# print 'in hash_noncore(), have $rperlnamespaces_generated::CORE = ' . Dumper($rperlnamespaces_generated::CORE) . "\n";
my $namespaces = {};
for my $name ( sort keys %main:: ) {
my $glob = $main::{$name};
if ( (not ref $glob) and %{$glob} # check glob ref to avoid "not a HASH reference" error on DUMMY code refs
and ( not exists $rperlnamespaces_generated::CORE->{$name} ) )
{
$namespaces->{$name} = 1;
}
}
return $namespaces;
}
sub hash_noncore_nonrperl {
# print 'in hash_noncore(), have $rperlnamespaces_generated::CORE = ' . Dumper($rperlnamespaces_generated::CORE) . "\n";
my $namespaces = {};
for my $name ( sort keys %main:: ) {
my $glob = $main::{$name};
if ( (not ref $glob) and %{$glob} # check glob ref to avoid "not a HASH reference" error on DUMMY code refs
and ( not exists $rperlnamespaces_generated::CORE->{$name} )
and ( not exists $rperlnamespaces_generated::RPERL->{$name} ) )
{
$namespaces->{$name} = 1;
}
}
return $namespaces;
}
1;