[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/ -> Carp.pm (source)

   1  package Carp;
   2  
   3  our $VERSION = '1.08';
   4  # this file is an utra-lightweight stub. The first time a function is
   5  # called, Carp::Heavy is loaded, and the real short/longmessmess_jmp
   6  # subs are installed
   7  
   8  our $MaxEvalLen = 0;
   9  our $Verbose    = 0;
  10  our $CarpLevel  = 0;
  11  our $MaxArgLen  = 64;   # How much of each argument to print. 0 = all.
  12  our $MaxArgNums = 8;    # How many arguments to print. 0 = all.
  13  
  14  require Exporter;
  15  our @ISA = ('Exporter');
  16  our @EXPORT = qw(confess croak carp);
  17  our @EXPORT_OK = qw(cluck verbose longmess shortmess);
  18  our @EXPORT_FAIL = qw(verbose);    # hook to enable verbose mode
  19  
  20  # if the caller specifies verbose usage ("perl -MCarp=verbose script.pl")
  21  # then the following method will be called by the Exporter which knows
  22  # to do this thanks to @EXPORT_FAIL, above.  $_[1] will contain the word
  23  # 'verbose'.
  24  
  25  sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ }
  26  
  27  # fixed hooks for stashes to point to
  28  sub longmess  { goto &longmess_jmp }
  29  sub shortmess { goto &shortmess_jmp }
  30  # these two are replaced when Carp::Heavy is loaded
  31  sub longmess_jmp  {
  32      local($@, $!);
  33      eval { require Carp::Heavy };
  34      return $@ if $@;
  35      goto &longmess_real;
  36  }
  37  sub shortmess_jmp  {
  38      local($@, $!);
  39      eval { require Carp::Heavy };
  40      return $@ if $@;
  41      goto &shortmess_real;
  42  }
  43  
  44  sub croak   { die  shortmess @_ }
  45  sub confess { die  longmess  @_ }
  46  sub carp    { warn shortmess @_ }
  47  sub cluck   { warn longmess  @_ }
  48  
  49  1;
  50  __END__
  51  
  52  =head1 NAME
  53  
  54  carp    - warn of errors (from perspective of caller)
  55  
  56  cluck   - warn of errors with stack backtrace
  57            (not exported by default)
  58  
  59  croak   - die of errors (from perspective of caller)
  60  
  61  confess - die of errors with stack backtrace
  62  
  63  =head1 SYNOPSIS
  64  
  65      use Carp;
  66      croak "We're outta here!";
  67  
  68      use Carp qw(cluck);
  69      cluck "This is how we got here!";
  70  
  71  =head1 DESCRIPTION
  72  
  73  The Carp routines are useful in your own modules because
  74  they act like die() or warn(), but with a message which is more
  75  likely to be useful to a user of your module.  In the case of
  76  cluck, confess, and longmess that context is a summary of every
  77  call in the call-stack.  For a shorter message you can use C<carp>
  78  or C<croak> which report the error as being from where your module
  79  was called.  There is no guarantee that that is where the error
  80  was, but it is a good educated guess.
  81  
  82  You can also alter the way the output and logic of C<Carp> works, by
  83  changing some global variables in the C<Carp> namespace. See the
  84  section on C<GLOBAL VARIABLES> below.
  85  
  86  Here is a more complete description of how c<carp> and c<croak> work.
  87  What they do is search the call-stack for a function call stack where
  88  they have not been told that there shouldn't be an error.  If every
  89  call is marked safe, they give up and give a full stack backtrace
  90  instead.  In other words they presume that the first likely looking
  91  potential suspect is guilty.  Their rules for telling whether
  92  a call shouldn't generate errors work as follows:
  93  
  94  =over 4
  95  
  96  =item 1.
  97  
  98  Any call from a package to itself is safe.
  99  
 100  =item 2.
 101  
 102  Packages claim that there won't be errors on calls to or from
 103  packages explicitly marked as safe by inclusion in C<@CARP_NOT>, or
 104  (if that array is empty) C<@ISA>.  The ability to override what
 105  @ISA says is new in 5.8.
 106  
 107  =item 3.
 108  
 109  The trust in item 2 is transitive.  If A trusts B, and B
 110  trusts C, then A trusts C.  So if you do not override C<@ISA>
 111  with C<@CARP_NOT>, then this trust relationship is identical to,
 112  "inherits from".
 113  
 114  =item 4.
 115  
 116  Any call from an internal Perl module is safe.  (Nothing keeps
 117  user modules from marking themselves as internal to Perl, but
 118  this practice is discouraged.)
 119  
 120  =item 5.
 121  
 122  Any call to Perl's warning system (eg Carp itself) is safe.
 123  (This rule is what keeps it from reporting the error at the
 124  point where you call C<carp> or C<croak>.)
 125  
 126  =item 6.
 127  
 128  C<$Carp::CarpLevel> can be set to skip a fixed number of additional
 129  call levels.  Using this is not recommended because it is very
 130  difficult to get it to behave correctly.
 131  
 132  =back
 133  
 134  =head2 Forcing a Stack Trace
 135  
 136  As a debugging aid, you can force Carp to treat a croak as a confess
 137  and a carp as a cluck across I<all> modules. In other words, force a
 138  detailed stack trace to be given.  This can be very helpful when trying
 139  to understand why, or from where, a warning or error is being generated.
 140  
 141  This feature is enabled by 'importing' the non-existent symbol
 142  'verbose'. You would typically enable it by saying
 143  
 144      perl -MCarp=verbose script.pl
 145  
 146  or by including the string C<MCarp=verbose> in the PERL5OPT
 147  environment variable.
 148  
 149  Alternately, you can set the global variable C<$Carp::Verbose> to true.
 150  See the C<GLOBAL VARIABLES> section below.
 151  
 152  =head1 GLOBAL VARIABLES
 153  
 154  =head2 $Carp::MaxEvalLen
 155  
 156  This variable determines how many characters of a string-eval are to
 157  be shown in the output. Use a value of C<0> to show all text.
 158  
 159  Defaults to C<0>.
 160  
 161  =head2 $Carp::MaxArgLen
 162  
 163  This variable determines how many characters of each argument to a
 164  function to print. Use a value of C<0> to show the full length of the
 165  argument.
 166  
 167  Defaults to C<64>.
 168  
 169  =head2 $Carp::MaxArgNums
 170  
 171  This variable determines how many arguments to each function to show.
 172  Use a value of C<0> to show all arguments to a function call.
 173  
 174  Defaults to C<8>.
 175  
 176  =head2 $Carp::Verbose
 177  
 178  This variable makes C<carp> and C<cluck> generate stack backtraces
 179  just like C<cluck> and C<confess>.  This is how C<use Carp 'verbose'>
 180  is implemented internally.
 181  
 182  Defaults to C<0>.
 183  
 184  =head2 %Carp::Internal
 185  
 186  This says what packages are internal to Perl.  C<Carp> will never
 187  report an error as being from a line in a package that is internal to
 188  Perl.  For example:
 189  
 190      $Carp::Internal{ __PACKAGE__ }++;
 191      # time passes...
 192      sub foo { ... or confess("whatever") };
 193  
 194  would give a full stack backtrace starting from the first caller
 195  outside of __PACKAGE__.  (Unless that package was also internal to
 196  Perl.)
 197  
 198  =head2 %Carp::CarpInternal
 199  
 200  This says which packages are internal to Perl's warning system.  For
 201  generating a full stack backtrace this is the same as being internal
 202  to Perl, the stack backtrace will not start inside packages that are
 203  listed in C<%Carp::CarpInternal>.  But it is slightly different for
 204  the summary message generated by C<carp> or C<croak>.  There errors
 205  will not be reported on any lines that are calling packages in
 206  C<%Carp::CarpInternal>.
 207  
 208  For example C<Carp> itself is listed in C<%Carp::CarpInternal>.
 209  Therefore the full stack backtrace from C<confess> will not start
 210  inside of C<Carp>, and the short message from calling C<croak> is
 211  not placed on the line where C<croak> was called.
 212  
 213  =head2 $Carp::CarpLevel
 214  
 215  This variable determines how many additional call frames are to be
 216  skipped that would not otherwise be when reporting where an error
 217  occurred on a call to one of C<Carp>'s functions.  It is fairly easy
 218  to count these call frames on calls that generate a full stack
 219  backtrace.  However it is much harder to do this accounting for calls
 220  that generate a short message.  Usually people skip too many call
 221  frames.  If they are lucky they skip enough that C<Carp> goes all of
 222  the way through the call stack, realizes that something is wrong, and
 223  then generates a full stack backtrace.  If they are unlucky then the
 224  error is reported from somewhere misleading very high in the call
 225  stack.
 226  
 227  Therefore it is best to avoid C<$Carp::CarpLevel>.  Instead use
 228  C<@CARP_NOT>, C<%Carp::Internal> and %Carp::CarpInternal>.
 229  
 230  Defaults to C<0>.
 231  
 232  =head1 BUGS
 233  
 234  The Carp routines don't handle exception objects currently.
 235  If called with a first argument that is a reference, they simply
 236  call die() or warn(), as appropriate.
 237  


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1