Hash-CoerceToArray version 0.01
===============================
The README is used to introduce the module and provide instructions on
how to install the module, any machine dependencies it may have (for
example C compilers and installed libraries) and any other information
that should be provided before the module is installed.
A README file is required for CPAN modules since CPAN extracts the
README file from a module distribution so that people browsing the
archive can use it get an idea of the modules uses. It is usually a
good idea to provide version information here so that people can
decide whether fixes for the module are worth downloading.
INSTALLATION
To install this module type the following:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
This module requires standard perl libraries
NAME
Hash::CoerceToArray - Find the depth of any multi-hierarchical HASH
REFERENCE structure - Go to any level of the HASH REFERENCE randomly and
convert the value against a key to an ARRAY REFERENCE if it is HASH
REFERENCE
SYNOPSIS
use Hash::CoerceToArray qw /coerceArray getMaxDepth/;
my $maxDepth = getMaxDepth (\%hash);
my $hashRef = coerceArray(\%hash);
my $hashRef = coerceArray(\%hash, $maxDepth);
map {$hashRef = coerceArray($hashRef,$_);} (1..$maxDepth)
ABSTRACT
This module allow the user the user to get maximum depth of a HASH REFERENCE
variable in a multilevel structure where values are HASH REFERENCES themselves.
Also, user is allowed to change the HASH REFERENCE value at any level randomly
to an ARRAY REFERENCE. By selecting the deepest level of the HASH REFERENCE
structure first and calling coerceArray() subroutine from thereon to depth level
of 1 sequentially, user can change the whole HASH REFERENCE structure
to an ARRAY REFERENCE hierarchy.
DESCRIPTION
Example HashRef.
my $hashRef = { 'L1_1' => {'L2_1' => {'L3_1' => 'V1',
'L3_2' => 'V2',
'L3_3' => 'V3'
},
'L2_2' => {'L3_1' => {'L4_1' => 'V1',
'L4_2' => 'V2',
},
},
},
};
print getMaxDepth($hashRef)
>>>> 4
$hashRef = coerceArray($hashRef);
print Dumper $hashRef;
>>>>>
{
'L1_1' => {
'L2_1' => {
'L3_2' => 'V2',
'L3_3' => 'V3',
'L3_1' => 'V1'
},
'L2_2' => {
'L3_1' => [
'L4_1',
'V1',
'L4_2',
'V2'
]
}
}
};
$hashRef = coerceArray($hashRef,2);
print Dumper $hashRef;
>>>>>
{
'L1_1' => [
'L2_1',
{
'L3_2' => 'V2',
'L3_3' => 'V3',
'L3_1' => 'V1'
},
'L2_2',
{
'L3_1' => [
'L4_1',
'V1',
'L4_2',
'V2'
]
}
]
};
CAVEATS
The coerceArray() routine as of now works only if the Hash References are found continuously,
if any other reference like Array References occur in between, it won't work as desired.
Eg. take the following Hash Reference which has Array Reference at Level 1
{
'L1_1' => [
'L2_1',
{
'L3_2' => 'V2',
'L3_3' => 'V3',
'L3_1' => 'V1'
},
'L2_2',
{
'L3_1' => [
'L4_1',
'V1',
'L4_2',
'V2'
]
}
]
};
Now here $hashRef = coerceArray($hashRef,2);
print Dumper $hashRef; - won't work as desired.
I will look to improve it in a future release.
SUPPORT
debashish@cpan.org
ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
Copyright 2013 Debashish Parasar, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.