search.cpan.org is shutting down
For details read Perl NOC. After June 25th this page will redirect to MetaCPAN.org
Robert Krimen > Hash-Slice > Hash::Slice
Module Version: 0.03

# NAME

Hash::Slice - Make a hash from a deep slice of another hash

Version 0.03

# SYNOPSIS

```    use Hash::Slice qw/slice cslice/;

# A trivial example
my %hash = (a => 1, b => 2, c => 3);

my \$slice = slice \%hash, qw/a b/;

# \$slice is now { a => 1, b => 2 }

# A hairy example
my %hash = (a => 1, b => 2, c => { d => 3, e => 4 });

my \$slice = slice \%hash, qw/a/, [ c => qw/e/ ];

# \$slice is now { a => 1, c => { e => 4 } }

# An even hairier example
my %hash = (a => 1, b => 2, c => { d => 3, e => 4, f => { g => 5, h => 6, k => [ 0 .. 4 ] } }, z => 7);

my \$slice = slice \%hash, qw/a z/, [ c => qw/e/, [ f => qw/g k/ ] ];

# \$slice is now { a => 1, z => 7, c => { e => 4, f => { g => 5, k => [ 0, 1, 2, 3, 4 ] } } }

# Make a cloned-slice of %hash
my %hash = (a => 1, b => 2, c => { d => 3, e => 4, f => { g => 5, h => 6, k => [ 0 .. 4 ] } }, z => 7);

my \$slice = cslice \%hash, qw/a z/, [ c => qw/e/, [ f => qw/g k/ ] ];
\$slice->{c}->{e} = "red"; # \$hash{c}->{e} is still 4```

# DESCRIPTION

Hash::Slice lets you easily make a deep slice of a hash, specifically a hash containing one or more nested hashes. Instead of just taking a slice of the first level of a hash in an all-or-nothing manner, you can use slice to take a slice of the first level, then take a particular slice of the second level, and so on.

# FUNCTIONS

## %slice = slice \$hash, @cut

Make a copy of \$hash according to @cut.

For each key in @cut, slice will copy the value of the key over to \$slice->{\$key}. If \$slice encounters an ARRAY instead of a key, it will make a deep slice using the first element of ARRAY as the key and the rest of the array as the cut.

Note, this method will not make an entry in \$slice unless the key exists in \$hash

Note, unless you are making a deep cut, slice will simply copy the reference of the data being copied, and not make a clone. If you need to make a completely independent copy, use cslice or dcslice.

## \$slice = clone_slice \$hash, @cut

Make a copy of \$hash according to @cut. \$slice is an independent clone of \$hash made using Clone::clone

## \$slice = dclone_slice \$hash, @cut

Make a copy of \$hash according to @cut. \$slice is an independent clone of \$hash made using Storable::dclone

# AUTHOR

Robert Krimen, `<rkrimen at cpan.org>`

# SOURCE

You can contribute or fork this project via GitHub:

http://github.com/robertkrimen/hash-slice/tree/master

`    git clone git://github.com/robertkrimen/hash-slice.git Hash-Slice`

# BUGS

Please report any bugs or feature requests to `bug-hash-slice at rt.cpan.org`, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Hash-Slice. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

# SUPPORT

You can find documentation for this module with the perldoc command.

`    perldoc Hash::Slice`

You can also look for information at: