The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Data::Focus::Lens::HashArray::Recurse - recursively traverse a tree of hashes and arrays

SYNOPSIS

    use Data::Focus qw(focus);
    use Data::Focus::Lens::HashArray::Recurse;
    
    my $target = [
        {foo => 1, bar => 2},
        3,
        [4, 5, 6],
        [],
        {}
        {hoge => 7}
    ];
    
    my $lens = Data::Focus::Lens::HashArray::Recurse->new;
    
    my $result = focus($target)->over($lens, sub { $_[0] * 100 });
    
    ## $result:
    ## [
    ##     {foo => 100, bar => 200},
    ##     300,
    ##     [400, 500, 600],
    ##     [],
    ##     {},
    ##     {hoge => 700}
    ## ]

DESCRIPTION

Data::Focus::Lens::HashArray::Recurse is a Data::Focus::Lens class that recursively traverses a data structure made of hashes and arrays. It creates focal points on everything it finds on the traversal.

The traversal is depth-first. Siblings in a hash are traversed in random order. Siblings in an array are traversed from the index 0.

CLASS METHODS

$lens = Data::Focus::Lens::HashArray::Recurse->new(%args)

The constructor. Fields in %args are:

immutable => BOOL (optional, default: false)

If set to true, the target hash/array is treated as immutable. This means every updating operation using the $lens creates a new hash/array in a copy-on-write fashion.

OBJECT METHODS

apply_lens

See Data::Focus::Lens.

AUTHOR

Toshio Ito, <toshioito at cpan.org>