Defines a set of symbolic constants with ordered numeric values ala C
   enum types.

   What are they good for? Typical uses would be for giving mnemonic names
   to indexes of arrays. Such arrays might be a list of months, days, or a
   return value index from a function such as localtime():

     use enum qw(
         :Months_=0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
         :Days_=0   Sun Mon Tue Wed Thu Fri Sat
         :LC_=0     Sec Min Hour MDay Mon Year WDay YDay Isdst
     );

     if ((localtime)[LC_Mon] == Months_Jan) {
         print "It's January!\n";
     }
     if ((localtime)[LC_WDay] == Days_Fri) {
         print "It's Friday!\n";
     }

   Another useful use of enum array index names is when using an array ref
   instead of a hash ref for building objects:

     package My::Class;
     use strict;

     use enum qw(Field Names You Want To Use);
     sub new {
         my $class = shift;
         my $self  = [];

         $self->[Field] = 'value'; # Field is '0'
         $self->[Names] = 'value'; # Names is '1'
         $self->[You]   = 'value'; # etc...
         $self->[Want]  = 'value';
         $self->[To]    = ['some', 'list'];
         $self->[Use]   = 'value';
         return bless $self, $class;
     }

   This has a couple of advantages over using a hash ref and keys: