use strict; use warnings; use Test::More tests => 5; use Log::Handler; my $CHECKED; sub check_struct { $CHECKED = 1; my $message = shift; my $value = ''; if (ref($message) eq 'HASH') { ok(1, "checking hashref"); $value = $message->{xname}; ok($value eq 'xvalue', "checking scalar ret value"); $value = $message->{yname}; ok($value eq 'yvalue', "checking code ret value"); } else { ok(0, "checking hashref"); } } my $log = Log::Handler->new(); $log->set_pattern('%X', 'xname', 'xvalue'); $log->set_pattern('%Y', 'yname', sub { 'xxxxxx' }); $log->add( forward => { forward_to => \&check_struct, maxlevel => 'debug', minlevel => 'debug', message_layout => '%m', message_pattern => [ qw/%X %Y/ ], } ); ok(1, 'new'); $log->set_pattern('%Y', 'yname', sub { 'yvalue' }); $log->debug('foo'); ok($CHECKED, "call check_struct()");