NAME Data::CSel::WrapStruct - Wrap data structure into a tree of objects suitable for use with Data::CSel VERSION This document describes version 0.004 of Data::CSel::WrapStruct (from Perl distribution Data-CSel-WrapStruct), released on 2019-07-29. SYNOPSIS use Data::CSel qw(csel); use Data::CSel::WrapStruct qw(wrap_struct); my $data = [ 0, 1, [2, ["two","dua"], {url=>"http://example.com/two.jpg"}, ["even","prime"]], 3, [4, ["four","empat"], {}, ["even"]], ]; my $tree = wrap_struct($data); my @nodes = csel(":root > * > *:nth-child(4) > *", $tree); my @tags = map { $_->value } @nodes; # -> ("even", "prime", "even") Arrays are wrapped in a Data::CSel::WrapStruct::Array, hashes in a Data::CSel::WrapStruct::Hash, and so on. So if you are using type selectors, you might want to add "Data::CSel::WrapStruct" into "class_prefixes" for convenience: my @hashes = map {$_->value} csel({class_prefixes=>["Data::CSel::WrapStruct"]}, "Hash", $tree); # -> ({url=>"http://example.com/two.jpg"}, {}) The wrapper objects provide some methods, e.g.: my @empty_hashes = map {$_->value} csel({class_prefixes=>["Data::CSel::WrapStruct"]}, "Hash[length=0]", $tree); # -> ({}) Refer to their respective documentation for the list of methods available. Some more examples: [map {$_->value} csel({class_prefixes=>["Data::CSel::WrapStruct"]}, "Scalar[value >= 3]")] # -> (3, 4) DESCRIPTION This module provides "wrap_struct()" which creates a tree of objects from a generic data structure. You can then perform node selection using Data::CSel's "csel()". You can retrieve the original value of data items by calling "value()" method on the tree nodes. FUNCTIONS None exported by default, but exportable. wrap_struct($data) => tree Wrap a data structure using a tree of objects. Currently cannot handle recursive structure. HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. SEE ALSO Data::CSel AUTHOR perlancar COPYRIGHT AND LICENSE This software is copyright (c) 2019, 2016 by perlancar@cpan.org. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.