⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 carp.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
字号:
package Carp;our $VERSION = '1.08';# this file is an utra-lightweight stub. The first time a function is# called, Carp::Heavy is loaded, and the real short/longmessmess_jmp# subs are installedour $MaxEvalLen = 0;our $Verbose    = 0;our $CarpLevel  = 0;our $MaxArgLen  = 64;   # How much of each argument to print. 0 = all.our $MaxArgNums = 8;    # How many arguments to print. 0 = all.require Exporter;our @ISA = ('Exporter');our @EXPORT = qw(confess croak carp);our @EXPORT_OK = qw(cluck verbose longmess shortmess);our @EXPORT_FAIL = qw(verbose);	# hook to enable verbose mode# if the caller specifies verbose usage ("perl -MCarp=verbose script.pl")# then the following method will be called by the Exporter which knows# to do this thanks to @EXPORT_FAIL, above.  $_[1] will contain the word# 'verbose'.sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ }# fixed hooks for stashes to point tosub longmess  { goto &longmess_jmp }sub shortmess { goto &shortmess_jmp }# these two are replaced when Carp::Heavy is loadedsub longmess_jmp  {    local($@, $!);    eval { require Carp::Heavy };    return $@ if $@;    goto &longmess_real;}sub shortmess_jmp  {    local($@, $!);    eval { require Carp::Heavy };    return $@ if $@;    goto &shortmess_real;}sub croak   { die  shortmess @_ }sub confess { die  longmess  @_ }sub carp    { warn shortmess @_ }sub cluck   { warn longmess  @_ }1;__END__=head1 NAMEcarp    - warn of errors (from perspective of caller)cluck   - warn of errors with stack backtrace          (not exported by default)croak   - die of errors (from perspective of caller)confess - die of errors with stack backtrace=head1 SYNOPSIS    use Carp;    croak "We're outta here!";    use Carp qw(cluck);    cluck "This is how we got here!";=head1 DESCRIPTIONThe Carp routines are useful in your own modules becausethey act like die() or warn(), but with a message which is morelikely to be useful to a user of your module.  In the case ofcluck, confess, and longmess that context is a summary of everycall in the call-stack.  For a shorter message you can use C<carp>or C<croak> which report the error as being from where your modulewas called.  There is no guarantee that that is where the errorwas, but it is a good educated guess.You can also alter the way the output and logic of C<Carp> works, bychanging some global variables in the C<Carp> namespace. See thesection on C<GLOBAL VARIABLES> below.Here is a more complete description of how c<carp> and c<croak> work.What they do is search the call-stack for a function call stack wherethey have not been told that there shouldn't be an error.  If everycall is marked safe, they give up and give a full stack backtraceinstead.  In other words they presume that the first likely lookingpotential suspect is guilty.  Their rules for telling whethera call shouldn't generate errors work as follows:=over 4=item 1.Any call from a package to itself is safe.=item 2.Packages claim that there won't be errors on calls to or frompackages explicitly marked as safe by inclusion in C<@CARP_NOT>, or(if that array is empty) C<@ISA>.  The ability to override what@ISA says is new in 5.8.=item 3.The trust in item 2 is transitive.  If A trusts B, and Btrusts C, then A trusts C.  So if you do not override C<@ISA>with C<@CARP_NOT>, then this trust relationship is identical to,"inherits from".=item 4.Any call from an internal Perl module is safe.  (Nothing keepsuser modules from marking themselves as internal to Perl, butthis practice is discouraged.)=item 5.Any call to Perl's warning system (eg Carp itself) is safe.(This rule is what keeps it from reporting the error at thepoint where you call C<carp> or C<croak>.)=item 6.C<$Carp::CarpLevel> can be set to skip a fixed number of additionalcall levels.  Using this is not recommended because it is verydifficult to get it to behave correctly.=back=head2 Forcing a Stack TraceAs a debugging aid, you can force Carp to treat a croak as a confessand a carp as a cluck across I<all> modules. In other words, force adetailed stack trace to be given.  This can be very helpful when tryingto understand why, or from where, a warning or error is being generated.This feature is enabled by 'importing' the non-existent symbol'verbose'. You would typically enable it by saying    perl -MCarp=verbose script.plor by including the string C<MCarp=verbose> in the PERL5OPTenvironment variable.Alternately, you can set the global variable C<$Carp::Verbose> to true.See the C<GLOBAL VARIABLES> section below.=head1 GLOBAL VARIABLES=head2 $Carp::MaxEvalLenThis variable determines how many characters of a string-eval are tobe shown in the output. Use a value of C<0> to show all text.Defaults to C<0>.=head2 $Carp::MaxArgLenThis variable determines how many characters of each argument to afunction to print. Use a value of C<0> to show the full length of theargument.Defaults to C<64>.=head2 $Carp::MaxArgNumsThis variable determines how many arguments to each function to show.Use a value of C<0> to show all arguments to a function call.Defaults to C<8>.=head2 $Carp::VerboseThis variable makes C<carp> and C<cluck> generate stack backtracesjust like C<cluck> and C<confess>.  This is how C<use Carp 'verbose'>is implemented internally.Defaults to C<0>.=head2 %Carp::InternalThis says what packages are internal to Perl.  C<Carp> will neverreport an error as being from a line in a package that is internal toPerl.  For example:    $Carp::Internal{ __PACKAGE__ }++;    # time passes...    sub foo { ... or confess("whatever") };would give a full stack backtrace starting from the first calleroutside of __PACKAGE__.  (Unless that package was also internal toPerl.)=head2 %Carp::CarpInternalThis says which packages are internal to Perl's warning system.  Forgenerating a full stack backtrace this is the same as being internalto Perl, the stack backtrace will not start inside packages that arelisted in C<%Carp::CarpInternal>.  But it is slightly different forthe summary message generated by C<carp> or C<croak>.  There errorswill not be reported on any lines that are calling packages inC<%Carp::CarpInternal>.For example C<Carp> itself is listed in C<%Carp::CarpInternal>.Therefore the full stack backtrace from C<confess> will not startinside of C<Carp>, and the short message from calling C<croak> isnot placed on the line where C<croak> was called.=head2 $Carp::CarpLevelThis variable determines how many additional call frames are to beskipped that would not otherwise be when reporting where an erroroccurred on a call to one of C<Carp>'s functions.  It is fairly easyto count these call frames on calls that generate a full stackbacktrace.  However it is much harder to do this accounting for callsthat generate a short message.  Usually people skip too many callframes.  If they are lucky they skip enough that C<Carp> goes all ofthe way through the call stack, realizes that something is wrong, andthen generates a full stack backtrace.  If they are unlucky then theerror is reported from somewhere misleading very high in the callstack.Therefore it is best to avoid C<$Carp::CarpLevel>.  Instead useC<@CARP_NOT>, C<%Carp::Internal> and %Carp::CarpInternal>.Defaults to C<0>.=head1 BUGSThe Carp routines don't handle exception objects currently.If called with a first argument that is a reference, they simplycall die() or warn(), as appropriate.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -