Test::Trap is primarily (but not exclusively) for use in test scripts: a block eval on steroids, configurable and extensible, but by default trapping (Perl) STDOUT, STDERR, warnings, exceptions, would-be exit codes, and return values from boxed blocks of test code. The values collected by the latest trap can then be queried or tested through a special trap object.