Data::Visitor::Callback - A Data::Visitor with callbacks.
use Data::Visitor::Callback;
my $v = Data::Visitor::Callback->new(
value => sub { ... },
array => sub { ... },
);
$v->visit( $some_perl_value );
This is a the Data::Visitor manpage subclass that lets you invoke callbacks instead of needing to subclass yourself.
Construct a new visitor.
The options supported are:
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
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
Called for all values
Called for non objects, non container (hash, array, glob or scalar ref) values.
Called after value, for references to regexes, globs and code.
Called after value for non references.
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 reccomended that you specify the classes you want though, instead of just visiting any object forcefully.
You can use any class name as a callback. This is clled only after the
object callback.
Called for array references.
Called for hash references.
Called for glob references.
Called for scalar references.
Yuval Kogman <nothingmuch@woobling.org>
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.