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

📄 error.pm

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 PM
字号:
package CPANPLUS::Error;use strict;use Log::Message private => 0;;=pod=head1 NAMECPANPLUS::Error=head1 SYNOPSIS    use CPANPLUS::Error qw[cp_msg cp_error];=head1 DESCRIPTIONThis module provides the error handling code for the CPANPLUSlibraries, and is mainly intended for internal use.=head1 FUNCTIONS=head2 cp_msg("message string" [,VERBOSE])Records a message on the stack, and prints it to C<STDOUT> (or actuallyC<$MSG_FH>, see the C<GLOBAL VARIABLES> section below), if theC<VERBOSE> option is true.The C<VERBOSE> option defaults to false.=head2 msg()An alias for C<cp_msg>.=head2 cp_error("error string" [,VERBOSE])Records an error on the stack, and prints it to C<STDERR> (or actuallyC<$ERROR_FH>, see the C<GLOBAL VARIABLES> sections below), if theC<VERBOSE> option is true.The C<VERBOSE> options defaults to true.=head2 error()An alias for C<cp_error>.=head1 CLASS METHODS=head2 CPANPLUS::Error->stack()Retrieves all the items on the stack. Since C<CPANPLUS::Error> isimplemented using C<Log::Message>, consult its manpage for thefunction C<retrieve> to see what is returned and how to use the items.=head2 CPANPLUS::Error->stack_as_string([TRACE])Returns the whole stack as a printable string. If the C<TRACE> option istrue all items are returned with C<Carp::longmess> output, rather thanjust the message.C<TRACE> defaults to false.=head2 CPANPLUS::Error->flush()Removes all the items from the stack and returns them. SinceC<CPANPLUS::Error> is  implemented using C<Log::Message>, consult itsmanpage for the function C<retrieve> to see what is returned and howto use the items.=cutBEGIN {    use Exporter;    use Params::Check   qw[check];    use vars            qw[@EXPORT @ISA $ERROR_FH $MSG_FH];    @ISA        = 'Exporter';    @EXPORT     = qw[cp_error cp_msg error msg];    my $log     = new Log::Message;    for my $func ( @EXPORT ) {        no strict 'refs';                my $prefix  = 'cp_';        my $name    = $func;        $name       =~ s/^$prefix//g;                *$func = sub {                        my $msg     = shift;                                                ### no point storing non-messages                        return unless defined $msg;                                                $log->store(                                message => $msg,                                tag     => uc $name,                                level   => $prefix . $name,                                extra   => [@_]                        );                };    }    sub flush {        return reverse $log->flush;    }    sub stack {        return $log->retrieve( chrono => 1 );    }    sub stack_as_string {        my $class = shift;        my $trace = shift() ? 1 : 0;        return join $/, map {                        '[' . $_->tag . '] [' . $_->when . '] ' .                        ($trace ? $_->message . ' ' . $_->longmess                                : $_->message);                    } __PACKAGE__->stack;    }}=head1 GLOBAL VARIABLES=over 4=item $ERROR_FHThis is the filehandle all the messages sent to C<error()> are beingprinted. This defaults to C<*STDERR>.=item $MSG_FHThis is the filehandle all the messages sent to C<msg()> are beingprinted. This default to C<*STDOUT>.=cutlocal $| = 1;$ERROR_FH   = \*STDERR;$MSG_FH     = \*STDOUT;package Log::Message::Handlers;use Carp ();{    sub cp_msg {        my $self    = shift;        my $verbose = shift;        ### so you don't want us to print the msg? ###        return if defined $verbose && $verbose == 0;        my $old_fh = select $CPANPLUS::Error::MSG_FH;        print '['. $self->tag . '] ' . $self->message . "\n";        select $old_fh;        return;    }    sub cp_error {        my $self    = shift;        my $verbose = shift;        ### so you don't want us to print the error? ###        return if defined $verbose && $verbose == 0;        my $old_fh = select $CPANPLUS::Error::ERROR_FH;        ### is only going to be 1 for now anyway ###        ### C::I may not be loaded, so do a can() check first        my $cb      = CPANPLUS::Internals->can('_return_all_objects')                        ? (CPANPLUS::Internals->_return_all_objects)[0]                        : undef;        ### maybe we didn't initialize an internals object (yet) ###        my $debug   = $cb ? $cb->configure_object->get_conf('debug') : 0;        my $msg     =  '['. $self->tag . '] ' . $self->message . "\n";        ### i'm getting this warning in the test suite:        ### Ambiguous call resolved as CORE::warn(), qualify as such or        ### use & at CPANPLUS/Error.pm line 57.        ### no idea where it's coming from, since there's no 'sub warn'        ### anywhere to be found, but i'll mark it explicitly nonetheless        ### --kane        print $debug ? Carp::shortmess($msg) : $msg . "\n";        select $old_fh;        return;    }}1;# Local variables:# c-indentation-style: bsd# c-basic-offset: 4# indent-tabs-mode: nil# End:# vim: expandtab shiftwidth=4:

⌨️ 快捷键说明

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