Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
Hash::WithDefaults(3) User Contributed Perl DocumentationHash::WithDefaults(3)


	- class	for hashes with	key-casing requirements	supporting defaults

       version 0.05

	 use Hash::WithDefaults;

	 %main = ( ... );
	 tie %h1, 'Hash::WithDefaults',	{...};
	 tie %h2, 'Hash::WithDefaults',	[...];

	 # now if you use $h1{$key}, the value is looked up first
	 # in %h1, then	in %main.

       This module implements hashes that support "defaults". That is you may
       specify several more hashes in which the	data will be looked up in case
       it is not found in the current hash.

   Object creation
	       tie %hash, 'Hash::WithDefault', [$case_option], [\%values];
	       tie %hash, 'Hash::WithDefault', [$case_option], [\@values];
	       tie %hash, 'Hash::WithDefault', [$case_option], [%values];

       The optional $case_option may be	one of these values:

	 Sensitive     - the hash will be case sensitive
	 Tolower       - the hash will be case sensitive, all keys are made lowercase
	 Toupper       - the hash will be case sensitive, all keys are made uppercase
	 Preserve      - the hash will be case insensitive, the	case is	preserved
	 Lower - the hash will be case insensitive, all	keys are made lowercase
	 Upper - the hash will be case insensitive, all	keys are made uppercase

       If you pass a hash or array reference or	an even	list of	keys and
       values to the tie() function, those keys	and values will	be COPIED to
       the resulting magical hash!

       After you tie() the hash, you use it just like any other	hash.



       This instructs the object to include the	%defaults in the search	for
       values.	After this the value will be looked up first in	%hash itself
       and then	in %defaults.

       You may keep modifying the %defaults and	your changes WILL be visible
       through %hash!

       You may add as many defaults to one Hash::WithDefaults object as	you
       like, they will be searched in the order	you add	them.

       If you delete a key from	the tied hash, it's only deleted from the list
       of specific keys, the defaults are never	modified through the tied
       hash. This means	that you may get a default value for a key after you
       deletethe key from the tied hash!


	       $defaults = tied(%hash)->GetDefaults();
	       push @$defaults,	\%another_default;

       Returns a reference to the array	that stores the	defaults.  You may
       delete or insert	hash references	into the array,	but make sure you
       NEVER EVER insert anything else than a hash reference into the array!

   Config::IniHash example
	 use Config::IniHash;
	 $config = ReadIni $inifile, withdefaults => 1,	case =>	'preserve';

	 if (exists $config->{':default'}) {
	   my $default = $config->{':default'};
	   foreach my $section (keys %$config) {
	     next if $section =~ /^:/;

       And now all normal sections will	get the	default	values from [:default]
       section ;-)

       Jan Krynicky <>

       Copyright (c) 2002-2009 Jan Krynicky <>. All rights

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

perl v5.32.1			  2009-06-01		 Hash::WithDefaults(3)


Want to link to this manual page? Use this URL:

home | help