GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  CARP::REPL (3)

.ds Aq ’

NAME

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

CONTENTS

SYNOPSIS

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



    perl -MCarp::REPL tps-report.pl
        Cant 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! theres my bug, I thought get_form returned an object"
    ah ha! theres my bug, I thought get_form returned an object



USAGE

CW-MCarp::REPL

CW-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.

CWuse Carp::REPL;

CWuse Carp::REPL warn;

Same as above.

CWuse 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.

CWuse Carp::REPL test;

CW-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.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 CARP::REPL (3) 2014-11-21

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.