Dan Kogai > Attribute-Constant-0.02 > Attribute::Constant

Download:
Attribute-Constant-0.02.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.02   Source   Latest Release: Attribute-Constant-0.06

NAME ^

Attribute::Constant - Make read-only variables via attribute

VERSION ^

$Id: Constant.pm,v 0.2 2008/06/27 19:50:52 dankogai Exp dankogai $

SYNOPSIS ^

 use Attribute::Constant;
 my $sv : Constant( $initial_value );
 my @av : Constant( @values );
 my %hv : Constant( key => value, key => value, ...);

DESCRIPTION ^

This module uses Data::Lock to make the variable read-only. Check the document and source of Data::Lock for its mechanism.

ATTRIBUTES ^

This module adds only one attribute, Constant. You give its initial value as shown. Unlike Readonly, parantheses cannot be ommited but it is semantically more elegant and thanks to Data::Lock, it imposes almost no performance penalty.

CAVEAT ^

Multi-line attributes are not allowed in Perl 5.8.x.

  my $o : Constant(Foo->new(1,2,3)) # ok;
  my $p : Constant(Bar->new(
                            1,2,3
                           )
                  )                 # needs Perl 5.10

In which case you can use Data::Lock instead:

  dlock(my $p = Bar->new(
                         1, 2, 3
                        ));

After all, this module is a wrapper to Data::Lock;

BENCHMARK ^

Here I have benchmarked like this.

  1.  Create an immutable variable.
  2.  try to change it and see if it raises exception
  3.  make sure the value stored remains unchanged.

See t/benchmark.pl for details.

Simple scalar
                Rate  Readonly      glob Attribute
  Readonly    7803/s        --      -97%      -97%
  glob      281666/s     3510%        --       -5%
  Attribute 295780/s     3691%        5%        --
Array with 1000 entries
                Rate  Readonly Attribute
  Readonly    8589/s        --      -97%
  Attribute 278755/s     3145%        --
Hash with 1000 key/value pairs
                Rate  Readonly Attribute
  Readonly    6979/s        --      -97%
  Attribute 207526/s     2874% 

SEE ALSO ^

Data::Lock, constant

AUTHOR ^

Dan Kogai, <dankogai at dan.co.jp>

BUGS ^

Please report any bugs or feature requests to bug-attribute-constant at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Attribute-Constant. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT ^

You can find documentation for this module with the perldoc command.

    perldoc Attribute::Constant

You can also look for information at:

ACKNOWLEDGEMENTS ^

Readonly

COPYRIGHT & LICENSE ^

Copyright 2008 Dan Kogai, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

syntax highlighting: