use CGI::Carp qw( fatalsToBrowser set_message ); use Devel::StackTrace; use HTML::Template; use Data::Dumper; BEGIN { my $VERBOSE = 0; set_message(sub { my $msg = shift; my $trace = Devel::StackTrace->new; my $tmpl = HTML::Template->new(filehandle => \*DATA); my %param = (msg => $msg); while(my $frame = $trace->next_frame) { my %frame = (subroutine => $frame->subroutine); chomp($VERBOSE # Nov. 10, 2003 did i make a typo? #chomp($frame{args} = $VERBOSE ? $frame{args} = Dumper($frame->args) : join(',', $frame->args) ); $frame{file} = $frame->filename; $frame{line} = $frame->line; push @{$param{stack}}, \%frame; } $tmpl->param(%param); print $tmpl->output; }); } __DATA__
(' ') called at line