Data::Visitor::CallbacUser Contributed Perl DocumentData::Visitor::Callback(3)NAMEData::Visitor::Callback - A Data::Visitor with callbacks.
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 Data::Visitor 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 Data::Visitor.
This is useful when you want to modify $_ directly
tied_as_objects
Whether ot not to visit the "tied" in perlfunc of a tied
structure instead of pretending the structure is just a normal
one.
See "visit_tied" in Data::Visitor.
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 Data::Visitor 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 reccomended 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 colled 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.
AUTHOR
Yuval Kogman <nothingmuch@woobling.org>
COPYRIGHT & LICENSE
Copyright (c) 2006 Yuval Kogman. All rights reserved
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
perl v5.14.1 2010-01-02 Data::Visitor::Callback(3)