#!/usr/bin/perl use strict; use warnings; use Test::More tests => 3; use Data::Visitor::Callback; sub newcb { Data::Visitor::Callback->new( @_ ) } ok( !newcb()->ignore_return_values, "ignore_return_values defaults to false" ); is( newcb( ignore_return_values => 1 )->ignore_return_values, 1, "but can be set as initial param" ); { my $data = { action => 'original' }; my $callbacks = { value => sub { my( $visitor, $data ) = @_; # program gets to here and $data eq 'original' return 'modified'; } }; my $v = Data::Visitor::Callback->new( %$callbacks ); is_deeply( $v->visit($data), { modified => "modified" } ); }