Devel::TraceFuncs provides utilities to trace the execution of a program. It can print traces that look something like: +-> global: '0' | +-> main::fo(4, 5) (in ./t.pm:32): 'now then' | | +-> main::fp(4, 5) (in ./t.pm:19) | | | +-> main::fq() (in ./t.pm:13) | | | | que pee doll (in ./t.pm:8) | | | +-< main::fq() (in ./t.pm:13) | | | cee dee (in ./t.pm:14) | | +-< main::fp(4, 5) (in ./t.pm:19) | | ha | | hs (in ./t.pm:20) | +-< main::fo(4, 5) (in ./t.pm:32): 'now then' | done (in ./t.pm:34) +-< global: '0'