Perl Diver 2.31
Main Environment Variables Perl Default Values Perl Config - Summary Perl Config - Full Installed Modules List Directory uptime Docs

Module Documentation
Details and documentation about a specific module, including version and documentation (if available). Note that while links to perldoc.com and search.cpan.org are provided, the module may be part of a larger distribution. If you reach a File Not Found page on either site, please try the parent module.

Data::Visitor::Callback

Name Data::Visitor::Callback
Version 0.31
Located at /usr/local/share/perl5
File /usr/local/share/perl5/Data/Visitor/Callback.pm
Is Core No
Search CPAN for this module Data::Visitor::Callback
Documentation Data::Visitor::Callback
Module Details Data::Visitor::Callback


NAME

Data::Visitor::Callback - A Data::Visitor with callbacks.


VERSION

version 0.31


SYNOPSIS

        use Data::Visitor::Callback;
        my $v = Data::Visitor::Callback->new(
                # you can provide callbacks
                # $_ will contain the visited value
                value => sub { ... },
                array => sub { ... },
                # you can also delegate to method names
                # this specific example will force traversal on objects, by using the
                # 'visit_ref' callback which normally traverse unblessed references
                object => "visit_ref",
                # you can also use class names as callbacks
                # the callback will be invoked on all objects which inherit that class
                'Some::Class' => sub {
                        my ( $v, $obj ) = @_; # $v is the visitor
                        ...
                },
        );
        $v->visit( $some_perl_value );


DESCRIPTION

This is a the Data::Visitor manpage subclass that lets you invoke callbacks instead of needing to subclass yourself.


METHODS

new %opts, %callbacks
Construct a new visitor.

The options supported are:

ignore_return_values
When this is true (off by default) the return values from the callbacks are ignored, thus disabling the fmapping behavior as documented in the Data::Visitor manpage.

This is useful when you want to modify $_ directly

tied_as_objects
Whether or not to visit the perlfunc/tied of a tied structure instead of pretending the structure is just a normal one.

See visit_tied in the Data::Visitor manpage.


CALLBACKS

Use these keys for the corresponding callbacks.

The callback is in the form:

        sub {
                my ( $visitor, $data ) = @_;
                # or you can use $_, it's aliased
                return $data; # or modified data
        }

Within the callback $_ is aliased to the data, and this is also passed in the parameter list.

Any method can also be used as a callback:

        object => "visit_ref", # visit objects anyway
visit
Called for all values

value
Called for non objects, non container (hash, array, glob or scalar ref) values.

ref_value
Called after value, for references to regexes, globs and code.

plain_value
Called after value for non references.

object
Called for blessed objects.

Since visit_object in the Data::Visitor manpage will not recurse downwards unless you delegate to visit_ref, you can specify visit_ref as the callback for object in order to enter objects.

It is recommended that you specify the classes (or base classes) you want though, instead of just visiting any object forcefully.

Some::Class
You can use any class name as a callback. This is called only after the object callback.

If the object isa the class then the callback will fire.

These callbacks are called from least derived to most derived by comparing the classes' isa at construction time.

object_no_class
Called for every object that did not have a class callback.

object_final
The last callback called for objects, useful if you want to post process the output of any class callbacks.

array
Called for array references.

hash
Called for hash references.

glob
Called for glob references.

scalar
Called for scalar references.

tied
Called on the return value of tied for all tied containers. Also passes in the variable as the second argument.

seen
Called for a reference value encountered a second time.

Passes in the result mapping as the second argument.


SUPPORT

Bugs may be submitted through the RT bug tracker (or bug-Data-Visitor@rt.cpan.org).


AUTHORS


COPYRIGHT AND LICENCE

This software is copyright (c) 2020 by Yuval Kogman.

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

Perl Diver brought to you by ScriptSolutions.com © 1997- 2024