Father Chrysostomos > constant-lexical > constant::lexical

Download:
constant-lexical-2.0001.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 2.0001   Source  

NAME ^

constant::lexical - Perl pragma to declare lexical compile-time constants

VERSION ^

2.0001

SYNOPSIS ^

  use constant::lexical DEBUG => 0;
  {
          use constant::lexical PI => 4 * atan2 1, 1;
          use constant::lexical DEBUG => 1;

          print "Pi equals ", PI, "...\n" if DEBUG;
  }
  print "just testing...\n" if DEBUG; # prints nothing
                                        (DEBUG is 0 again)
  use constant::lexical \%hash_of_constants;
  use constant::lexical WEEKDAYS => @weekdays; # list

  use constant::lexical { PIE        => 4 * atan2(1,1),
                          CHEESECAKE => 3 * atan2(1,1),
                         };

DESCRIPTION ^

This module creates compile-time constants in the manner of constant.pm, but makes them local to the enclosing scope.

WHY? ^

I sometimes use these for objects that are blessed arrays, which are faster than hashes. I use constants instead of keys, but I don't want them exposed as methods, so this is where lexical constants come in handy.

PREREQUISITES ^

This module requires perl 5.8.0 or later and, depending on your version of perl, one of the following modules, which you can get from the CPAN:

BUGS ^

The following three bugs have been fixed for perl 5.11.2 and higher, but are still present for older versions of perl:

If you find any other bugs, please report them to the author via e-mail.

ACKNOWLEDGEMENTS ^

The idea of using objects in %^H (in the pre-5.10 code) was stolen from namespace::clean. The idea of doing cleanup in a DELETE method on a tied field hash (in the 5.10 code) was likewise stolen from namespace::clean.

Some of the code for the perl 5.11.2 version is plagiarised from constant.pm by Tom Phoenix.

AUTHOR & COPYRIGHT ^

Copyright (C) 2008, 2010, 2012 Father Chrysostomos (sprout at, um, cpan dot org)

This program is free software; you may redistribute or modify it (or both) under the same terms as perl.

SEE ALSO ^

constant, Sub::Delete, namespace::clean, Lexical::Sub

syntax highlighting: