Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Carp::REPL(3)	      User Contributed Perl Documentation	 Carp::REPL(3)

NAME
       Carp::REPL - read-eval-print-loop on die	and/or warn

SYNOPSIS
       The intended way	to use this module is through the command line.

	   perl	-MCarp::REPL tps-report.pl
	       Can't call method "cover_sheet" without a package or object reference at	tps-report.pl line 6019.

	   # instead of	exiting, you get a REPL!

	   $ $form
	   27B/6

	   $ $self->get_form
	   27B/6

	   $ "ah ha! there's my	bug, I thought get_form	returned an object"
	   ah ha! there's my bug, I thought get_form returned an object

USAGE
   "-MCarp::REPL"
   "-MCarp::REPL=warn"
       Works as	command	line argument. This automatically installs the die
       handler for you,	so if you receive a fatal error	you get	a REPL before
       the universe explodes. Specifying "=warn" also installs a warn handler
       for finding those mysterious warnings.

   "use	Carp::REPL;"
   "use	Carp::REPL 'warn';"
       Same as above.

   "use	Carp::REPL 'nodie';"
       Loads the module	without	installing the die handler. Use	this if	you
       just want to run	"Carp::REPL::repl" on your own terms.

   "use	Carp::REPL 'test';"
   "-MCarp::REPL=test"
       Load a REPL on test failure! (as	long as	it uses	"ok" in	Test::More)

FUNCTIONS
   repl
       This module's interface consists	of exactly one function: repl. This is
       provided	so you may install your	own $SIG{__DIE__} handler if you have
       no alternatives.

       It takes	the same arguments as die, and returns no useful value.	In
       fact, don't even	depend on it returning at all!

       One useful place	for calling this manually is if	you just want to check
       the state of things without having to throw a fake error. You can also
       change any variables and	those changes will be seen by the rest of your
       program.

	   use Carp::REPL 'repl';

	   sub involved_calculation {
	       # ...
	       $d = maybe_zero();
	       # ...
	       repl(); # $d = 1
	       $sum += $n / $d;
	       # ...
	   }

       Unfortunately if	you instead go with the	usual "-MCarp::REPL", then
       $SIG{__DIE__} will be invoked and there's no general way	to recover.
       But you can still change	variables to poke at things.

COMMANDS
       Note that this is not supposed to be a full-fledged debugger. A few
       commands	are provided to	aid you	in finding out what went awry. See
       Devel::ebug if you're looking for a serious debugger.

       o   :u

	   Moves one frame up in the stack.

       o   :d

	   Moves one frame down	in the stack.

       o   :top

	   Moves to the	top frame of the stack.

       o   :bottom

	   Moves to the	bottom frame of	the stack.

       o   :t

	   Redisplay the stack trace.

       o   :e

	   Display the current lexical environment.

       o   :l

	   List	eleven lines of	source code of the current frame.

       o   :q

	   Close the REPL. ("^D" also works)

VARIABLES
       o   $_REPL

	   This	represents the Devel::REPL object.

       o   $_a

	   This	represents the arguments passed	to the subroutine at the
	   current frame in the	call stack. Modifications are ignored (how
	   would that work anyway?  Re-invoke the sub?)

CAVEATS
       Dynamic scope probably produces unexpected results. I don't see any
       easy (or	even difficult!) solution to this. Therefore it's a caveat and
       not a bug. :)

SEE ALSO
       Devel::REPL, Devel::ebug, Enbugger, CGI::Inspect

AUTHOR
       Shawn M Moore, "<sartak at gmail.com>"

BUGS
       Please report any bugs or feature requests to "bug-carp-repl at
       rt.cpan.org", or	through	the web	interface at
       <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Carp-REPL>.

ACKNOWLEDGEMENTS
       Thanks to Nelson	Elhage and Jesse Vincent for the idea.

       Thanks to Matt Trout and	Stevan Little for their	advice.

COPYRIGHT & LICENSE
       Copyright 2007-2008 Best	Practical Solutions.

       This program is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

perl v5.24.1			  2015-06-06			 Carp::REPL(3)

NAME | SYNOPSIS | USAGE | FUNCTIONS | COMMANDS | VARIABLES | CAVEATS | SEE ALSO | AUTHOR | BUGS | ACKNOWLEDGEMENTS | COPYRIGHT & LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Carp::REPL&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help