Using Carp::REPL with a Catalyst application is hard. Thats
because of all the internal exceptions that are being thrown and caught by
Catalyst during application startup. Youd have to manually skip over all of
This role works around that by automatically setting up Carp::REPL after
starting your application, if the CATALYST_REPL or MYAPP_REPL environment
variables are set:
# Hit an action
42 at lib/MyApp/Controller/Foo.pm line 8.
# instead of exiting, you get a REPL!
Trace begun at lib/MyApp/Controller/Foo.pm line 8
MyApp::Controller::Foo::bar(MyApp::Controller::Foo=HASH(0xc9fe20), MyApp=HASH(0xcea6a4)) called at ...
... # Many more lines of stack trace
Options like warn or nodie can be passed to Carp::REPL by putting them,
seperated by commas, into the environment variable:
Carp::REPL uses Devel::REPL for the shell, so direct any questions how how
to use or customize the repl at that module.