use strict;
use warnings;
use Parse::RecDescent;
$::RD_ERRORS=1;
$::RD_WARN=1;
$::RD_HINT=1;
$::RD_TRACE=1;
open(Parse::RecDescent::ERROR, '>', 'errfile')
or die("Can't redirect errors to file 'errfile': $!\n");
open(Parse::RecDescent::TRACE, '>', 'tracefile')
or die("Can't redirect errors to file 'tracefile': $!\n");
Parse::RecDescent->new('parse:')->parse('');
####
>perl 659805a.pl
printing code (3018) to RD_TRACE
>type errfile
Parse::RecDescent: Treating "parse:" as a rule declaration
>type tracefile
1| parse |Trying rule: [parse] |
1| parse |Trying production: [] |
1| parse |>>Matched production: []<< |
1| parse |>>Matched rule<< (return value: |
| |[parse]) |
1| parse |(consumed: []) |
####
use strict;
use warnings;
use vars '$tracemsg';
use vars '$tracecontext';
use vars '$tracerulename';
use vars '$tracelevel';
open (TRACE, ">&STDERR");
format TRACE =
@>|@|||||||||@^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<|
$tracelevel, $tracerulename, '|', $tracemsg
| ~~ |^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<|
$tracemsg
.
$tracemsg = 'tracemsg';
$tracecontext = 'tracecontext';
$tracerulename = 'tracerulename';
$tracelevel = 'tracelevel';
write TRACE;
open(TRACE, ">tracefile") or die;
$tracemsg = 'tracemsg';
$tracecontext = 'tracecontext';
$tracerulename = 'tracerulename';
$tracelevel = 'tracelevel';
write TRACE;
####
>perl -v
This is perl, v5.8.8 built for MSWin32-x86-multi-thread
(with 25 registered patches, see perl -V for more detail)
Copyright 1987-2006, Larry Wall
Binary build 817 [257965] provided by ActiveState http://www.ActiveState.com
Built Mar 20 2006 17:54:25
...
>perl 659805b.pl
tr|tracerulen|tracemsg |
>type tracefile
tr|tracerulen|tracemsg |