diff options
Diffstat (limited to 'gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/Tie/CPHash.pm')
-rw-r--r-- | gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/Tie/CPHash.pm | 195 |
1 files changed, 0 insertions, 195 deletions
diff --git a/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/Tie/CPHash.pm b/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/Tie/CPHash.pm deleted file mode 100644 index 217d6425767..00000000000 --- a/gnu/usr.bin/perl/cpan/Module-Metadata/t/lib/Tie/CPHash.pm +++ /dev/null @@ -1,195 +0,0 @@ -#--------------------------------------------------------------------- -package Tie::CPHash; -# -# Copyright 1997 Christopher J. Madsen -# -# Author: Christopher J. Madsen <cjm@pobox.com> -# Created: 08 Nov 1997 -# $Revision$ $Date$ -# -# This program is free software; you can redistribute it and/or modify -# it under the same terms as Perl itself. -# -# 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 either the -# GNU General Public License or the Artistic License for more details. -# -# Case preserving but case insensitive hash -#--------------------------------------------------------------------- - -require 5.000; -use strict; -use warnings; -use vars qw(@ISA $VERSION); - -@ISA = qw(); - -#===================================================================== -# Package Global Variables: - -$VERSION = '1.02'; - -#===================================================================== -# Tied Methods: -#--------------------------------------------------------------------- -# TIEHASH classname -# The method invoked by the command `tie %hash, classname'. -# Associates a new hash instance with the specified class. - -sub TIEHASH -{ - bless {}, $_[0]; -} # end TIEHASH - -#--------------------------------------------------------------------- -# STORE this, key, value -# Store datum *value* into *key* for the tied hash *this*. - -sub STORE -{ - $_[0]->{lc $_[1]} = [ $_[1], $_[2] ]; -} # end STORE - -#--------------------------------------------------------------------- -# FETCH this, key -# Retrieve the datum in *key* for the tied hash *this*. - -sub FETCH -{ - my $v = $_[0]->{lc $_[1]}; - ($v ? $v->[1] : undef); -} # end FETCH - -#--------------------------------------------------------------------- -# FIRSTKEY this -# Return the (key, value) pair for the first key in the hash. - -sub FIRSTKEY -{ - my $a = scalar keys %{$_[0]}; - &NEXTKEY; -} # end FIRSTKEY - -#--------------------------------------------------------------------- -# NEXTKEY this, lastkey -# Return the next (key, value) pair for the hash. - -sub NEXTKEY -{ - my $v = (each %{$_[0]})[1]; - ($v ? $v->[0] : undef ); -} # end NEXTKEY - -#--------------------------------------------------------------------- -# SCALAR this -# Return bucket usage information for the hash (0 if empty). - -sub SCALAR -{ - scalar %{$_[0]}; -} # end SCALAR - -#--------------------------------------------------------------------- -# EXISTS this, key -# Verify that *key* exists with the tied hash *this*. - -sub EXISTS -{ - exists $_[0]->{lc $_[1]}; -} # end EXISTS - -#--------------------------------------------------------------------- -# DELETE this, key -# Delete the key *key* from the tied hash *this*. -# Returns the old value, or undef if it didn't exist. - -sub DELETE -{ - my $v = delete $_[0]->{lc $_[1]}; - ($v ? $v->[1] : undef); -} # end DELETE - -#--------------------------------------------------------------------- -# CLEAR this -# Clear all values from the tied hash *this*. - -sub CLEAR -{ - %{$_[0]} = (); -} # end CLEAR - -#===================================================================== -# Other Methods: -#--------------------------------------------------------------------- -# Return the case of KEY. - -sub key -{ - my $v = $_[0]->{lc $_[1]}; - ($v ? $v->[0] : undef); -} - -#===================================================================== -# Package Return Value: - -1; - -__END__ - -=head1 NAME - -Tie::CPHash - Case preserving but case insensitive hash table - -=head1 SYNOPSIS - - require Tie::CPHash; - tie %cphash, 'Tie::CPHash'; - - $cphash{'Hello World'} = 'Hi there!'; - printf("The key `%s' was used to store `%s'.\n", - tied(%cphash)->key('HELLO WORLD'), - $cphash{'HELLO world'}); - -=head1 DESCRIPTION - -The B<Tie::CPHash> module provides a hash table that is case -preserving but case insensitive. This means that - - $cphash{KEY} $cphash{key} - $cphash{Key} $cphash{keY} - -all refer to the same entry. Also, the hash remembers which form of -the key was last used to store the entry. The C<keys> and C<each> -functions will return the key that was used to set the value. - -An example should make this clear: - - tie %h, 'Tie::CPHash'; - $h{Hello} = 'World'; - print $h{HELLO}; # Prints 'World' - print keys(%h); # Prints 'Hello' - $h{HELLO} = 'WORLD'; - print $h{hello}; # Prints 'WORLD' - print keys(%h); # Prints 'HELLO' - -The additional C<key> method lets you fetch the case of a specific key: - - # When run after the previous example, this prints 'HELLO': - print tied(%h)->key('Hello'); - -(The C<tied> function returns the object that C<%h> is tied to.) - -If you need a case insensitive hash, but don't need to preserve case, -just use C<$hash{lc $key}> instead of C<$hash{$key}>. This has a lot -less overhead than B<Tie::CPHash>. - -=head1 AUTHOR - -Christopher J. Madsen E<lt>F<cjm@pobox.com>E<gt> - -=cut - -# Local Variables: -# tmtrack-file-task: "Tie::CPHash.pm" -# End: |