diff options
author | Andy Dougherty <doughera.lafayette.edu> | 1995-12-21 00:01:16 +0000 |
---|---|---|
committer | Andy Dougherty <doughera.lafayette.edu> | 1995-12-21 00:01:16 +0000 |
commit | cb1a09d0194fed9b905df7b04a4bc031d354609d (patch) | |
tree | f0c890a5a8f5274873421ac573dfc719188e5eec /lib/TieHash.pm | |
parent | 3712091946b37b5feabcc1f630b32639406ad717 (diff) | |
download | perl-cb1a09d0194fed9b905df7b04a4bc031d354609d.tar.gz |
This is patch.2b1g to perl5.002beta1.
cd to your perl source directory, and type
patch -p1 -N < patch.2b1g
This patch is just my packaging of Tom's documentation patches
he released as patch.2b1g.
Patch and enjoy,
Andy Dougherty doughera@lafcol.lafayette.edu
Dept. of Physics
Lafayette College, Easton PA 18042
Diffstat (limited to 'lib/TieHash.pm')
-rw-r--r-- | lib/TieHash.pm | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/lib/TieHash.pm b/lib/TieHash.pm index 446cbcb25b..161771a0ea 100644 --- a/lib/TieHash.pm +++ b/lib/TieHash.pm @@ -1,4 +1,103 @@ package TieHash; + +=head1 NAME + +TieHash, TieHash::Std - base class definitions for tied hashes + +=head1 SYNOPSIS + + package NewHash; + require TieHash; + + @ISA = (TieHash); + + sub DELETE { ... } # Provides needed method + sub CLEAR { ... } # Overrides inherited method + + + package NewStdHash; + require TieHash; + + @ISA = (TieHash::Std); + + # All methods provided by default, define only those needing overrides + sub DELETE { ... } + + + package main; + + tie %new_hash, NewHash; + tie %new_std_hash, NewStdHash; + +=head1 DESCRIPTION + +This module provides some skeletal methods for hash-tying classes. See +L<perlfunc/tie> for a list of the functions required in order to tie a hash +to a package. The basic B<TieHash> package provides a C<new> method, as well +as methods C<TIEHASH>, C<EXISTS> and C<CLEAR>. The B<TieHash::Std> package +provides most methods required for hashes in L<perlfunc/tie>. It inherits from +B<TieHash>, and causes tied hashes to behave exactly like standard hashes, +allowing for selective overloading of methods. The B<new> method is provided +as grandfathering in the case a class forgets to include a B<TIEHASH> method. + +For developers wishing to write their own tied hashes, the required methods +are: + +=item TIEHASH classname, LIST + +The method invoked by the command C<tie %hash, class>. Associates a new +hash instance with the specified class. C<LIST> would represent additional +arguments (along the lines of L<AnyDBM_File> and compatriots) needed to +complete the association. + +=item STORE this, key, value + +Store datum I<value> into I<key> for the tied hash I<this>. + +=item FETCH this, key + +Retrieve the datum in I<key> for the tied hash I<this>. + +=item FIRSTKEY this + +Return the (key, value) pair for the first key in the hash. + +=item NEXTKEY this, lastkey + +Return the next (key, value) pair for the hash. + +=item EXISTS this, key + +Verify that I<key> exists with the tied hash I<this>. + +=item DELETE this, key + +Delete the key I<key> from the tied hash I<this>. + +=item CLEAR this + +Clear all values from the tied hash I<this>. + +=back + +=head1 CAVEATS + +The L<perlfunc/tie> documentation includes a method called C<DESTROY> as +a necessary method for tied hashes. Neither B<TieHash> nor B<TieHash::Std> +define a default for this method. + +The C<CLEAR> method provided by these two packages is not listed in the +L<perlfunc/tie> section. + +=head1 MORE INFORMATION + +The packages relating to various DBM-related implemetations (F<DB_File>, +F<NDBM_File>, etc.) show examples of general tied hashes, as does the +L<Config> module. While these do not utilize B<TieHash>, they serve as +good working examples. + +=cut + use Carp; sub new { |