r6916 - in /branches/upstream/libhash-withdefaults-perl: ./ current/ current/Changes current/MANIFEST current/Makefile.PL current/README current/WithDefaults.pm current/test.pl
azatoth-guest at users.alioth.debian.org
azatoth-guest at users.alioth.debian.org
Sat Aug 18 17:03:57 UTC 2007
Author: azatoth-guest
Date: Sat Aug 18 17:03:57 2007
New Revision: 6916
URL: http://svn.debian.org/wsvn/?sc=1&rev=6916
Log:
[svn-inject] Installing original source of libhash-withdefaults-perl
Added:
branches/upstream/libhash-withdefaults-perl/
branches/upstream/libhash-withdefaults-perl/current/
branches/upstream/libhash-withdefaults-perl/current/Changes
branches/upstream/libhash-withdefaults-perl/current/MANIFEST
branches/upstream/libhash-withdefaults-perl/current/Makefile.PL
branches/upstream/libhash-withdefaults-perl/current/README
branches/upstream/libhash-withdefaults-perl/current/WithDefaults.pm
branches/upstream/libhash-withdefaults-perl/current/test.pl
Added: branches/upstream/libhash-withdefaults-perl/current/Changes
URL: http://svn.debian.org/wsvn/branches/upstream/libhash-withdefaults-perl/current/Changes?rev=6916&op=file
==============================================================================
--- branches/upstream/libhash-withdefaults-perl/current/Changes (added)
+++ branches/upstream/libhash-withdefaults-perl/current/Changes Sat Aug 18 17:03:57 2007
@@ -1,0 +1,8 @@
+Revision history for Perl extension Hash::WithDefaults.
+
+0.01 Tue Jul 23 17:39:23 2002
+ - original version; created by h2xs 1.21 with options
+ -X -n Hash::WithDefaults
+
+0.04 Thu Dec 5 13:22 2002 (CET)
+ - made public
Added: branches/upstream/libhash-withdefaults-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/branches/upstream/libhash-withdefaults-perl/current/MANIFEST?rev=6916&op=file
==============================================================================
--- branches/upstream/libhash-withdefaults-perl/current/MANIFEST (added)
+++ branches/upstream/libhash-withdefaults-perl/current/MANIFEST Sat Aug 18 17:03:57 2007
@@ -1,0 +1,6 @@
+Changes
+Makefile.PL
+MANIFEST
+README
+test.pl
+WithDefaults.pm
Added: branches/upstream/libhash-withdefaults-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/branches/upstream/libhash-withdefaults-perl/current/Makefile.PL?rev=6916&op=file
==============================================================================
--- branches/upstream/libhash-withdefaults-perl/current/Makefile.PL (added)
+++ branches/upstream/libhash-withdefaults-perl/current/Makefile.PL Sat Aug 18 17:03:57 2007
@@ -1,0 +1,11 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+ 'NAME' => 'Hash::WithDefaults',
+ 'VERSION_FROM' => 'WithDefaults.pm', # finds $VERSION
+ 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1
+ ($] >= 5.005 ? ## Add these new keywords supported since 5.005
+ (ABSTRACT_FROM => 'WithDefaults.pm', # retrieve abstract from module
+ AUTHOR => 'Jenda Krynicky (Jenda at Krynicky.cz)') : ()),
+);
Added: branches/upstream/libhash-withdefaults-perl/current/README
URL: http://svn.debian.org/wsvn/branches/upstream/libhash-withdefaults-perl/current/README?rev=6916&op=file
==============================================================================
--- branches/upstream/libhash-withdefaults-perl/current/README (added)
+++ branches/upstream/libhash-withdefaults-perl/current/README Sat Aug 18 17:03:57 2007
@@ -1,0 +1,29 @@
+Hash/WithDefaults version 0.04
+==============================
+
+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.
+
+INSTALLATION
+
+To install this module type the following:
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+DEPENDENCIES
+
+This module requires these other modules and libraries:
+
+ Tie::StdHash
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2002 Jenda Krynicky <Jenda at Krynicky.cz>
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
Added: branches/upstream/libhash-withdefaults-perl/current/WithDefaults.pm
URL: http://svn.debian.org/wsvn/branches/upstream/libhash-withdefaults-perl/current/WithDefaults.pm?rev=6916&op=file
==============================================================================
--- branches/upstream/libhash-withdefaults-perl/current/WithDefaults.pm (added)
+++ branches/upstream/libhash-withdefaults-perl/current/WithDefaults.pm Sat Aug 18 17:03:57 2007
@@ -1,0 +1,648 @@
+package Hash::WithDefaults;
+use strict;
+use Carp;
+require Tie::Hash;
+use vars qw(@ISA $VERSION);
+ at ISA = qw(Tie::StdHash);
+$VERSION = '0.04';
+
+sub DATA () {0}
+sub DEFAULTS () {1}
+sub ACTDEFAULT () {2}
+sub SEEN () {3}
+
+sub makeTIEHASH {
+ my ($class, $set) = @_;
+ $class = 'Hash::WithDefaults::' . $class;
+ eval "sub ${class}::TIEHASH {" . <<'*END*' . "\t\t\t" . $set . <<'*END*' . "\t\t\t" . $set . <<'*END*';
+ my $class = shift();
+ my $data = {};
+
+ if (! @_) {
+ # no parameters
+ return bless [ $data, []], $class;
+ }
+
+ if (@_ == 1 and ref $_[0] eq 'HASH') {
+ my $input=$_[0];
+ my ($key,$value);
+ while (($key,$value) = each(%$input)) {
+*END*
+
+ }
+ } else {
+ my ($i, $arr) = (0);
+ if (ref $_[0] eq 'ARRAY') {
+ $arr = $_[0];
+ } elsif (@_ % 2 == 0) {
+ $arr = \@_;
+ } else {
+ croak "Ussage: tie %hashname, $class, \%hash\n or tie %hashname, $class, \\\%hash\n or tie %hashname, $class, \\\@array\n";
+ }
+ while ($i <= $#$arr) {
+ my ($key,$value)=($arr->[$i],$arr->[$i+1]); $i+=2;
+*END*
+
+ }
+ }
+
+ bless [$data, []];
+}
+*END*
+}
+
+makeTIEHASH 'sensitive', '$data->{$key} = $value;';
+makeTIEHASH 'tolower', '$data->{lc $key} = $value;';
+makeTIEHASH 'toupper', '$data->{uc $key} = $value;';
+makeTIEHASH 'lower', '$data->{lc $key} = $value;';
+makeTIEHASH 'upper', '$data->{uc $key} = $value;';
+makeTIEHASH 'preserve', '$data->{lc $key} = [$key,$value];';
+
+sub TIEHASH {
+ shift(); # shift out class name
+ if (@_ == 0) {
+ # no parameters
+ unshift @_, 'Hash::WithDefaults::preserve';
+ goto &Hash::WithDefaults::preserve::TIEHASH;
+ }
+
+ if (!ref $_[0] and (ref $_[1] eq 'HASH' or @_ % 2 == 1)) {
+ # type plus either \%hash or %hash
+ my $type = lc(splice(@_, 0, 1));
+ if ($type =~ /^(?:sensitive|preserve|lower|upper|tolower|toupper)$/) {
+ unshift @_, 'Hash::WithDefaults::' . $type;
+ no strict 'refs';
+ goto &{"Hash::WithDefaults::".$type."::TIEHASH"};
+ } else {
+ croak "Unknown type '$type'! Use one of:\n\tsensitive, preserve, lower, upper, tolower, toupper";
+ }
+ } else {
+ unshift @_, 'Hash::WithDefaults::preserve';
+ goto &Hash::WithDefaults::preserve::TIEHASH;
+ }
+}
+
+sub AddDefault {
+ push @{$_[0]->[DEFAULTS]}, $_[1];
+ return 1;
+}
+
+sub GetDefaults {
+ my $self = shift;
+ return $self->[DEFAULTS];
+}
+
+sub CLEAR {
+ my $self = shift;
+ undef $self->[SEEN];
+ undef $self->[ACTDEFAULT];
+ $self
+}
+
+
+#############################
+
+package Hash::WithDefaults::preserve;
+BEGIN {*Hash::WithDefaults::Preserve:: = \%Hash::WithDefaults::preserve::;}
+ at Hash::WithDefaults::preserve::ISA = qw(Hash::WithDefaults);
+sub DATA () {0}
+sub DEFAULTS () {1}
+sub ACTDEFAULT () {2}
+sub SEEN () {3}
+
+sub TIEHASH {
+ splice( @_, 1, 0, 'preserve');
+ goto &Hash::WithDefaults::TIEHASH;
+}
+
+sub STORE {
+ $_[0]->[DATA]->{lc $_[1]} = [$_[1],$_[2]];
+}
+
+sub FETCH {
+ my $lc_key = lc $_[1];
+ return ${$_[0]->[DATA]->{$lc_key}}[1]
+ if exists $_[0]->[DATA]->{$lc_key};
+
+ foreach my $default (@{$_[0]->[DEFAULTS]}) {
+ return $default->{$_[1]}
+ if exists($default->{$_[1]});
+ }
+
+ return;
+}
+
+sub EXISTS {
+ return 1
+ if exists $_[0]->[DATA]->{lc $_[1]};
+
+ foreach my $default (@{$_[0]->[DEFAULTS]}) {
+ return 1
+ if exists($default->{$_[1]});
+ }
+
+ return;
+}
+
+sub DELETE {
+ delete $_[0]->[DATA]->{lc $_[1]}
+}
+
+sub FIRSTKEY {
+ my $self = $_[0];
+ undef $self->[ACTDEFAULT];
+ $self->[SEEN] = {};
+ keys %{$self->[DATA]};
+ my ($key,$val);
+ if (($key,$val) = each %{$self->[DATA]}) {
+ $self->[SEEN]->{$key}=1;
+ return wantarray ? ($val->[0], $val->[1]) : $val->[0];
+ } elsif (@{$self->[DEFAULTS]}) {
+ return $self->NEXTKEY();
+ } else {
+ return;
+ }
+}
+
+sub NEXTKEY {
+ my $self = $_[0];
+ my $seen = $self->[SEEN];
+ my ($key,$val);
+ if (!defined $self->[ACTDEFAULT]) {
+ # processing the base hash
+ if (($key,$val) = each %{$self->[DATA]}) {
+ $seen->{$key}=1;
+ return wantarray ? ($val->[0], $val->[1]) : $val->[0];
+ } else {
+ # base hash done
+ if (! @{$self->[DEFAULTS]}) {
+ # no defaults
+ return;
+ } else {
+ $self->[ACTDEFAULT]=0;
+ # reset the first default
+ keys %{$self->[DEFAULTS]->[0]};
+ }
+ }
+ }
+
+ while (exists $self->[DEFAULTS]->[$self->[ACTDEFAULT]]) {
+ while (($key,$val) = each %{$self->[DEFAULTS]->[$self->[ACTDEFAULT]]}) {
+ return wantarray ? ($key, $val) : $key
+ unless $seen->{lc $key}++;
+ }
+
+ $self->[ACTDEFAULT]++;
+ keys %{$self->[DEFAULTS]->[$self->[ACTDEFAULT]]}
+ if exists $self->[DEFAULTS]->[$self->[ACTDEFAULT]];
+ }
+
+ # all hashes done. Cleanup
+ undef $self->[SEEN];
+ undef $self->[ACTDEFAULT];
+ return;
+}
+
+#############################
+
+package Hash::WithDefaults::lower;
+BEGIN {*Hash::WithDefaults::Lower:: = \%Hash::WithDefaults::lower::;}
+ at Hash::WithDefaults::lower::ISA = qw(Hash::WithDefaults::preserve);
+sub DATA () {0}
+sub DEFAULTS () {1}
+sub ACTDEFAULT () {2}
+sub SEEN () {3}
+
+sub TIEHASH {
+ splice( @_, 1, 0, 'lower');
+ goto &Hash::WithDefaults::TIEHASH;
+}
+
+sub STORE {
+ $_[0]->[DATA]->{lc $_[1]} = $_[2];
+}
+
+sub FETCH {
+ return $_[0]->[DATA]->{lc $_[1]}
+ if exists $_[0]->[DATA]->{lc $_[1]};
+
+ foreach my $default (@{$_[0]->[DEFAULTS]}) {
+ return $default->{$_[1]}
+ if exists($default->{$_[1]});
+ }
+
+ return;
+}
+
+sub EXISTS {
+ return 1
+ if exists $_[0]->[DATA]->{lc $_[1]};
+
+ foreach my $default (@{$_[0]->[DEFAULTS]}) {
+ return 1
+ if exists($default->{$_[1]});
+ }
+
+ return;
+}
+
+sub DELETE {
+ delete $_[0]->[DATA]->{lc $_[1]}
+}
+
+sub FIRSTKEY {
+ my $self = $_[0];
+ $self->[ACTDEFAULT] = -1;
+ $self->[SEEN] = {};
+ keys %{$self->[DATA]};
+ my ($key,$val);
+ if (($key,$val) = each %{$self->[DATA]}) {
+ $self->[SEEN]->{$key}=1;
+ return wantarray ? ($key, $val) : $key;
+ } elsif (@{$self->[DEFAULTS]}) {
+ return $self->NEXTKEY();
+ } else {
+ return;
+ }
+}
+
+sub NEXTKEY {
+ my $self = $_[0];
+ my $seen = $self->[SEEN];
+ my $defaults = $self->[DEFAULTS];
+ my ($key,$val);
+ if ($self->[ACTDEFAULT] == -1) {
+ # processing the base hash
+ if (($key,$val) = each %{$self->[DATA]}) {
+ $seen->{$key}=1;
+ return wantarray ? ($key, $val) : $key;
+ } else {
+ # base hash done
+ $self->[ACTDEFAULT]=0;
+ if (! @$defaults) {
+ # no defaults
+ return;
+ } else {
+ # reset the first default
+ keys %{$defaults->[0]};
+ }
+ }
+ }
+ while (exists $defaults->[$self->[ACTDEFAULT]]) {
+ while (($key,$val) = each %{$defaults->[$self->[ACTDEFAULT]]}) {
+ return wantarray ? ($key, $val) : $key
+ unless $seen->{lc $key}++;
+ }
+
+ $self->[ACTDEFAULT]++;
+ keys %{$defaults->[$self->[ACTDEFAULT]]}
+ if exists $defaults->[$self->[ACTDEFAULT]];
+ }
+
+ # all hashes done. Cleanup
+ undef $self->[SEEN];
+ undef $self->[ACTDEFAULT];
+ return;
+}
+
+#############################
+
+package Hash::WithDefaults::upper;
+BEGIN {*Hash::WithDefaults::Upper:: = \%Hash::WithDefaults::upper::;}
+ at Hash::WithDefaults::upper::ISA = qw(Hash::WithDefaults::preserve);
+sub DATA () {0}
+sub DEFAULTS () {1}
+sub ACTDEFAULT () {2}
+sub SEEN () {3}
+
+sub TIEHASH {
+ splice( @_, 1, 0, 'upper');
+ goto &Hash::WithDefaults::TIEHASH;
+}
+
+sub STORE {
+ $_[0]->[DATA]->{uc $_[1]} = $_[2];
+}
+
+sub FETCH {
+ return $_[0]->[DATA]->{uc $_[1]}
+ if exists $_[0]->[DATA]->{uc $_[1]};
+
+ foreach my $default (@{$_[0]->[DEFAULTS]}) {
+ return $default->{$_[1]}
+ if exists($default->{$_[1]});
+ }
+
+ return;
+}
+
+sub EXISTS {
+ return 1
+ if exists $_[0]->[DATA]->{uc $_[1]};
+
+ foreach my $default (@{$_[0]->[DEFAULTS]}) {
+ return 1
+ if exists($default->{$_[1]});
+ }
+
+ return;
+}
+
+sub DELETE {
+ delete $_[0]->[DATA]->{uc $_[1]}
+}
+
+sub FIRSTKEY {
+ my $self = $_[0];
+ $self->[ACTDEFAULT] = -1;
+ $self->[SEEN] = {};
+ keys %{$self->[DATA]};
+ my ($key,$val);
+ if (($key,$val) = each %{$self->[DATA]}) {
+ $self->[SEEN]->{$key}=1;
+ return wantarray ? ($key, $val) : $key;
+ } elsif (@{$self->[DEFAULTS]}) {
+ return $self->NEXTKEY();
+ } else {
+ return;
+ }
+}
+
+sub NEXTKEY {
+ my $self = $_[0];
+ my $seen = $self->[SEEN];
+ my $defaults = $self->[DEFAULTS];
+ my ($key,$val);
+ if ($self->[ACTDEFAULT] == -1) {
+ # processing the base hash
+ if (($key,$val) = each %{$self->[DATA]}) {
+ $seen->{$key}=1;
+ return wantarray ? ($key, $val) : $key;
+ } else {
+ # base hash done
+ $self->[ACTDEFAULT]=0;
+ if (! @$defaults) {
+ # no defaults
+ return;
+ } else {
+ # reset the first default
+ keys %{$defaults->[0]};
+ }
+ }
+ }
+ while (exists $defaults->[$self->[ACTDEFAULT]]) {
+ while (($key,$val) = each %{$defaults->[$self->[ACTDEFAULT]]}) {
+ return wantarray ? ($key, $val) : $key
+ unless $seen->{uc $key}++;
+ }
+
+ $self->[ACTDEFAULT]++;
+ keys %{$defaults->[$self->[ACTDEFAULT]]}
+ if exists $defaults->[$self->[ACTDEFAULT]];
+ }
+
+ # all hashes done. Cleanup
+ undef $self->[SEEN];
+ undef $self->[ACTDEFAULT];
+ return;
+}
+
+
+#############################
+
+package Hash::WithDefaults::sensitive;
+BEGIN {*Hash::WithDefaults::Sensitive:: = \%Hash::WithDefaults::sensitive::;}
+ at Hash::WithDefaults::sensitive::ISA = qw(Hash::WithDefaults);
+sub DATA () {0}
+sub DEFAULTS () {1}
+sub ACTDEFAULT () {2}
+sub SEEN () {3}
+
+sub TIEHASH {
+ splice( @_, 1, 0, 'sensitive');
+ goto &Hash::WithDefaults::TIEHASH;
+}
+
+sub STORE {
+ $_[0]->[DATA]->{$_[1]} = $_[2];
+}
+
+sub FETCH {
+ return $_[0]->[DATA]->{$_[1]}
+ if exists $_[0]->[DATA]->{$_[1]};
+
+ foreach my $default (@{$_[0]->[DEFAULTS]}) {
+ return $default->{$_[1]}
+ if exists($default->{$_[1]});
+ }
+
+ return;
+}
+
+sub EXISTS {
+ return 1
+ if exists $_[0]->[DATA]->{$_[1]};
+
+ foreach my $default (@{$_[0]->[DEFAULTS]}) {
+ return 1
+ if exists($default->{$_[1]});
+ }
+
+ return;
+}
+
+sub DELETE {
+ delete $_[0]->[DATA]->{$_[1]}
+}
+
+sub FIRSTKEY {
+ my $self = $_[0];
+ $self->[ACTDEFAULT] = -1;
+ $self->[SEEN] = {};
+ keys %{$self->[DATA]};
+ my ($key,$val);
+ if (($key,$val) = each %{$self->[DATA]}) {
+ $self->[SEEN]->{$key}=1;
+ return wantarray ? ($key, $val) : $key;
+ } elsif (@{$self->[DEFAULTS]}) {
+ return $self->NEXTKEY();
+ } else {
+ return;
+ }
+}
+
+sub NEXTKEY {
+ my $self = $_[0];
+ my $seen = $self->[SEEN];
+ my $defaults = $self->[DEFAULTS];
+ my ($key,$val);
+ if ($self->[ACTDEFAULT] == -1) {
+ # processing the base hash
+ if (($key,$val) = each %{$self->[DATA]}) {
+ $seen->{$key}=1;
+ return wantarray ? ($key, $val) : $key;
+ } else {
+ # base hash done
+ $self->[ACTDEFAULT]=0;
+ if (! @$defaults) {
+ # no defaults
+ return;
+ } else {
+ # reset the first default
+ keys %{$defaults->[0]};
+ }
+ }
+ }
+ while (exists $defaults->[$self->[ACTDEFAULT]]) {
+ while (($key,$val) = each %{$defaults->[$self->[ACTDEFAULT]]}) {
+ return wantarray ? ($key, $val) : $key
+ unless $seen->{$key}++;
+ }
+
+ $self->[ACTDEFAULT]++;
+ keys %{$defaults->[$self->[ACTDEFAULT]]}
+ if exists $defaults->[$self->[ACTDEFAULT]];
+ }
+
+ # all hashes done. Cleanup
+ undef $self->[SEEN];
+ undef $self->[ACTDEFAULT];
+ return;
+}
+
+
+#############################
+
+package Hash::WithDefaults::toupper;
+BEGIN {*Hash::WithDefaults::Toupper:: = \%Hash::WithDefaults::toupper::;}
+ at Hash::WithDefaults::toupper::ISA = qw(Hash::WithDefaults::sensitive);
+sub DATA () {0}
+sub DEFAULTS () {1}
+sub ACTDEFAULT () {2}
+sub SEEN () {3}
+
+sub TIEHASH {
+ splice( @_, 1, 0, 'toupper');
+ goto &Hash::WithDefaults::TIEHASH;
+}
+
+sub STORE {
+ $_[0]->[DATA]->{uc $_[1]} = $_[2];
+}
+
+#############################
+
+package Hash::WithDefaults::tolower;
+BEGIN {*Hash::WithDefaults::Tolower:: = \%Hash::WithDefaults::tolower::;}
+ at Hash::WithDefaults::tolower::ISA = qw(Hash::WithDefaults::sensitive);
+sub DATA () {0}
+sub DEFAULTS () {1}
+sub ACTDEFAULT () {2}
+sub SEEN () {3}
+
+sub TIEHASH {
+ splice( @_, 1, 0, 'tolower');
+ goto &Hash::WithDefaults::TIEHASH;
+}
+
+sub STORE {
+ $_[0]->[DATA]->{lc $_[1]} = $_[2];
+}
+
+1;
+
+__END__
+=head1 NAME
+
+Hash::WithDefaults - class for hashes with key-casing requirements supporting defaults
+
+version 0.04
+
+=head1 SYNOPSIS
+
+ use Hash::WithDefaults;
+
+ %main = ( ... );
+ tie %h1, 'Hash::WithDefaults', {...};
+ tied(%h1)->AddDefault(\%main);
+ tie %h2, 'Hash::WithDefaults', {...};
+ tied(%h2)->AddDefault(\%main);
+
+ # now if you use $h1{$key}, the value is looked up first
+ # in %h1, then in %main.
+
+=head1 DESCRIPTION
+
+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.
+
+=head2 Object creation
+
+ 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 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.
+
+=head2 Functions
+
+=head3 AddDefault
+
+ tied(%hash)->AddDefault(\%defaults);
+
+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.
+
+=head3 GetDefaults
+
+ $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!
+
+=head2 Config::IniHash example
+
+ use Config::IniHash;
+ $config = ReadIni $inifile, withdefaults => 1, insensitive => 'preserve';
+
+ if (exists $config->{':default'}) {
+ my $default = $config->{':default'};
+ foreach my $section (keys %$config) {
+ next if $section =~ /^:/;
+ tied(%{$config->{$section}})->AddDefault($default)
+ }
+ }
+
+And now all normal sections will get the default values from [:default] section ;-)
+
+=head1 AUTHOR
+
+Jan Krynicky <Jenda at Krynicky.cz>
+http://Jenda.Krynicky.cz
+
+=head1 COPYRIGHT
+
+Copyright (c) 2002 Jan Krynicky <Jenda at Krynicky.cz>. All rights reserved.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
Added: branches/upstream/libhash-withdefaults-perl/current/test.pl
URL: http://svn.debian.org/wsvn/branches/upstream/libhash-withdefaults-perl/current/test.pl?rev=6916&op=file
==============================================================================
--- branches/upstream/libhash-withdefaults-perl/current/test.pl (added)
+++ branches/upstream/libhash-withdefaults-perl/current/test.pl Sat Aug 18 17:03:57 2007
@@ -1,0 +1,17 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use Test;
+BEGIN { plan tests => 1 };
+use Hash::WithDefaults;
+ok(1); # If we made it this far, we're ok.
+
+#########################
+
+# Insert your test code below, the Test module is use()ed here so read
+# its man page ( perldoc Test ) for help writing this test script.
+
More information about the Pkg-perl-cvs-commits
mailing list