# NAME

Data::Seek - Search Complex Data Structures

# VERSION

version 0.04

# SYNOPSIS

    use Data::Seek;

    my $hash   = {...};
    my $seeker = Data::Seek->new(data => $hash);
    my $result = $seeker->search('*');

    $result->data;

# DESCRIPTION

Data::Seek is a module for traversing complex data structures. This module
allows you to select specific node(s) in a hierarchical data structure using a
criteria. A criteria is an expression consisting of one or more criterion. A
criterion is the part of the criteria that is used to select node(s) and
sub-node(s) to be returned in the result. Data::Seek is akin to [Data::Dpath](http://search.cpan.org/perldoc?Data::Dpath)
but with far fewer features, a simpler node selection syntax, and a
non-recursive approach toward traversal which makes Data::Seek extremely fast
and efficient. An even better reason to use Data::Seek is its ability to throw
exception objects which explain, in detail, why a search failed. This is very
useful internally, and externally when processing foreign data structures where
you need to provide detailed errors explaining how to resolve the missing or
malformed data nodes. For more information on the underlying concepts, please
see [Data::Seek::Concepts](http://search.cpan.org/perldoc?Data::Seek::Concepts).

# ATTRIBUTES

## data

    $seeker->data;
    $seeker->data(Data::Seek::Data->new(...));

The data structure to be introspected, must be a hash reference, blessed or not,
which defaults to or becomes a [Data::Seek::Data](http://search.cpan.org/perldoc?Data::Seek::Data) object.

## ignore

    $seeker->ignore;
    $seeker->ignore(1);

Bypass exceptions thrown when a criterion finds an unknown or invalid node in
the data structure.

# METHODS

## search

    my @criteria = ('id', 'person.name.*');
    my $result   = $seeker->search(@criteria);

Prepare a search object to use the supplied criteria and return a result
object. Introspection is triggered when the result object is enacted. See
[Data::Seek::Search::Result](http://search.cpan.org/perldoc?Data::Seek::Search::Result) for usage information.

# AUTHOR

Al Newkirk <anewkirk@ana.io>

# COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Al Newkirk.

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