[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/Package/ -> Constants.pm (source)

   1  package Package::Constants;
   2  
   3  use strict;
   4  use vars qw[$VERSION $DEBUG];
   5  
   6  $VERSION    = '0.01';
   7  $DEBUG      = 0;
   8  
   9  =head1 NAME 
  10  
  11  Package::Constants - List all constants declared in a package
  12  
  13  =head1 SYNOPSIS
  14  
  15      use Package::Constants;
  16      
  17      ### list the names of all constants in a given package;
  18      @const = Package::Constants->list( __PACKAGE__ );
  19      @const = Package::Constants->list( 'main' );
  20  
  21      ### enable debugging output
  22      $Package::Constants::DEBUG = 1;
  23  
  24  =head1 DESCRIPTION
  25  
  26  C<Package::Constants> lists all the constants defined in a certain 
  27  package. This can be useful for, among others, setting up an 
  28  autogenerated C<@EXPORT/@EXPORT_OK> for a Constants.pm file.
  29  
  30  =head1 CLASS METHODS
  31  
  32  =head2 @const = Package::Constants->list( PACKAGE_NAME );
  33  
  34  Lists the names of all the constants defined in the provided package.
  35  
  36  =cut
  37  
  38  sub list {
  39      my $class = shift;
  40      my $pkg   = shift;
  41      return unless defined $pkg; # some joker might use '0' as a pkg...
  42      
  43      _debug("Inspecting package '$pkg'");
  44      
  45      my @rv;
  46      {   no strict 'refs';
  47          my $stash = $pkg . '::';
  48  
  49          for my $name (sort keys %$stash ) {
  50          
  51              _debug( "   Checking stash entry '$name'" );
  52              
  53              ### is it a subentry?
  54              my $sub = $pkg->can( $name );
  55              next unless defined $sub;
  56                  
  57              _debug( "       '$name' is a coderef" );
  58              
  59              next unless defined prototype($sub) and 
  60                       not length prototype($sub);
  61  
  62              _debug( "       '$name' is a constant" );
  63              push @rv, $name;
  64          }
  65      }
  66      
  67      return sort @rv;
  68  }
  69  
  70  =head1 GLOBAL VARIABLES
  71  
  72  =head2 $Package::Constants::DEBUG
  73  
  74  When set to true, prints out debug information to STDERR about the
  75  package it is inspecting. Helps to identify issues when the results
  76  are not as you expect.
  77  
  78  Defaults to false.
  79  
  80  =cut
  81  
  82  sub _debug { warn "@_\n" if $DEBUG; }
  83  
  84  1;
  85  
  86  =head1 AUTHOR
  87  
  88  This module by
  89  Jos Boumans E<lt>kane@cpan.orgE<gt>.
  90  
  91  =head1 COPYRIGHT
  92  
  93  This module is
  94  copyright (c) 2004-2005 Jos Boumans E<lt>kane@cpan.orgE<gt>.
  95  All rights reserved.
  96  
  97  This library is free software;
  98  you may redistribute and/or modify it under the same
  99  terms as Perl itself.
 100  
 101  =cut
 102  
 103  # Local variables:
 104  # c-indentation-style: bsd
 105  # c-basic-offset: 4
 106  # indent-tabs-mode: nil
 107  # End:
 108  # vim: expandtab shiftwidth=4:


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1