|
NAMEData::Lock - makes variables (im)?mutableVERSION$Id: Lock.pm,v 1.3 2014/03/07 18:24:43 dankogai Exp dankogai $SYNOPSISuse Data::Lock qw/dlock dunlock/; dlock my $sv = $initial_value; dlock my $ar = [@values]; dlock my $hr = { key => value, key => value, ... }; dunlock $sv; dunlock $ar; dunlock \@av; dunlock $hr; dunlock \%hv; DESCRIPTION"dlock" makes the specified variable immutable like Readonly. Unlike Readonly which implements immutability via "tie", "dlock" makes use of the internal flag of perl SV so it imposes almost no penalty.Like Readonly, "dlock" locks not only the variable itself but also elements therein. As of verion 0.03, you can "dlock" objects as well. Below is an example constructor that returns an immutable object: sub new { my $pkg = shift; my $self = { @_ }; bless $self, $pkg; dlock($self); $self; } Or consider using Moose. EXPORTLike List::Util and Scalar::Util, functions are exported only explicitly. This module comes with "dlock" and "dunlock".use Data::Lock; # nothing imported; use Data::Lock qw/dlock dunlock/; # imports dlock() and dunlock() FUNCTIONSdlockdlock($scalar); Locks $scalar and if $scalar is a reference, recursively locks referents. dunlockDoes the opposite of "dlock".BENCHMARKHere 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.
SEE ALSOReadonly, perlguts, perlapiAUTHORDan Kogai, "<dankogai+gmail at gmail.com>"BUGSPlease report any bugs or feature requests to "bug-data-lock at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Lock>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.SUPPORTYou can find documentation for this module with the perldoc command.perldoc Data::Lock You can also look for information at:
COPYRIGHT & LICENSECopyright 2008-2013 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.
Visit the GSP FreeBSD Man Page Interface. |