This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(was Re: [ID 20011110.104] File::stat vs. $! conflict)
[perl5.git] / lib / Carp.pm
index 43524dd..cd2cfdb 100644 (file)
@@ -1,5 +1,7 @@
 package Carp;
 
+our $VERSION = '1.00';
+
 =head1 NAME
 
 carp    - warn of errors (from perspective of caller)
@@ -19,6 +21,9 @@ confess - die of errors with stack backtrace
     use Carp qw(cluck);
     cluck "This is how we got here!";
 
+    print FH Carp::shortmess("This will have caller's details added");
+    print FH Carp::longmess("This will have stack backtrace added");
+
 =head1 DESCRIPTION
 
 The Carp routines are useful in your own modules because
@@ -28,6 +33,11 @@ routine Foo() that has a carp() in it, then the carp()
 will report the error as occurring where Foo() was called, 
 not where carp() was called.
 
+The routine shortmess() can be used to generate the string that
+carp/croak would have produced.   The routine longmess() can be
+used to generate the backtrace that cluck/confess would have
+produced.
+
 =head2 Forcing a Stack Trace
 
 As a debugging aid, you can force Carp to treat a croak as a confess
@@ -40,7 +50,7 @@ This feature is enabled by 'importing' the non-existent symbol
 
     perl -MCarp=verbose script.pl
 
-or by including the string C<MCarp=verbose> in the L<PERL5OPT>
+or by including the string C<MCarp=verbose> in the PERL5OPT
 environment variable.
 
 =head1 BUGS
@@ -68,10 +78,12 @@ $MaxArgLen = 64;        # How much of each argument to print. 0 = all.
 $MaxArgNums = 8;        # How many arguments to print. 0 = all.
 $Verbose = 0;          # If true then make shortmess call longmess instead
 
+$CarpInternal{Carp}++;
+
 require Exporter;
 @ISA = ('Exporter');
 @EXPORT = qw(confess croak carp);
-@EXPORT_OK = qw(cluck verbose);
+@EXPORT_OK = qw(cluck verbose longmess shortmess);
 @EXPORT_FAIL = qw(verbose);    # hook to enable verbose mode