X-Git-Url: http://git.jankratochvil.net/?a=blobdiff_plain;f=Hash%2FReadonly.pm;fp=Hash%2FReadonly.pm;h=b84b3baec7f15c3eb0c8f823c5570cad07c41acc;hb=aaa499f21bc074a0f4508963412ea387a811e3e7;hp=0000000000000000000000000000000000000000;hpb=3cff9c1c05e572c0e98c02ffa1aa6c3d2fc4dcf5;p=MyWeb.git diff --git a/Hash/Readonly.pm b/Hash/Readonly.pm new file mode 100644 index 0000000..b84b3ba --- /dev/null +++ b/Hash/Readonly.pm @@ -0,0 +1,37 @@ +# $Id$ +# Hash tied to optionally dynamically generate its values and being locked/readonly +# Copyright (C) 2005 Jan Kratochvil +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; exactly version 2 of June 1991 is required +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +package My::Hash::Readonly; +our $VERSION=do { my @r=(q$Revision$=~/\d+/g); sprintf "%d.".("%03d"x$#r),@r; }; +our $CVS_ID=q$Id$; +use strict; +use warnings; +use My::Web; # for &Wrequire +Wrequire 'My::Hash'; +our @ISA=qw(My::Hash); +use Carp qw(cluck confess); + + +# Implementation reason: &Hash::Util::lock_hash does not work for tied hashes! + + +sub STORE { confess "READ-ONLY requirement violation"; } +sub DELETE { confess "READ-ONLY requirement violation"; } +sub CLEAR { confess "READ-ONLY requirement violation"; } + +1;