package Package::Constants;
+use if $] >= 5.019006, 'deprecate';
+
use strict;
use vars qw[$VERSION $DEBUG];
-$VERSION = '0.02';
+$VERSION = '0.04';
$DEBUG = 0;
-=head1 NAME
+=head1 NAME
Package::Constants - List all constants declared in a package
=head1 SYNOPSIS
use Package::Constants;
-
+
### list the names of all constants in a given package;
@const = Package::Constants->list( __PACKAGE__ );
@const = Package::Constants->list( 'main' );
=head1 DESCRIPTION
-C<Package::Constants> lists all the constants defined in a certain
-package. This can be useful for, among others, setting up an
+C<Package::Constants> lists all the constants defined in a certain
+package. This can be useful for, among others, setting up an
autogenerated C<@EXPORT/@EXPORT_OK> for a Constants.pm file.
=head1 CLASS METHODS
my $class = shift;
my $pkg = shift;
return unless defined $pkg; # some joker might use '0' as a pkg...
-
+
_debug("Inspecting package '$pkg'");
-
+
my @rv;
{ no strict 'refs';
my $stash = $pkg . '::';
for my $name (sort keys %$stash ) {
-
+
_debug( " Checking stash entry '$name'" );
-
+
### is it a subentry?
my $sub = $pkg->can( $name );
next unless defined $sub;
-
+
_debug( " '$name' is a coderef" );
-
+
next unless defined prototype($sub) and
not length prototype($sub);
push @rv, $name;
}
}
-
+
return sort @rv;
}
=head1 COPYRIGHT
-This library is free software; you may redistribute and/or modify it
+This library is free software; you may redistribute and/or modify it
under the same terms as Perl itself.
=cut