.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "App::Info::Handler::Carp 3pm"
.TH App::Info::Handler::Carp 3pm "2020-01-23" "perl v5.30.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
App::Info::Handler::Carp \- Use Carp to handle App::Info events
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 2
\& use App::Info::Category::FooApp;
\& use App::Info::Handler::Carp;
\&
\& my $carp = App::Info::Handler::Carp\->new(\*(Aqcarp\*(Aq);
\& my $app = App::Info::Category::FooApp\->new( on_info => $carp );
\&
\& # Or...
\& my $app = App::Info::Category::FooApp\->new( on_error => \*(Aqcroak\*(Aq );
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
App::Info::Handler::Carp objects handle App::Info events by passing their
messages to Carp functions. This means that if you want errors to croak or
info messages to carp, you can easily do that. You'll find, however, that
App::Info::Handler::Carp is most effective for info and error events; unknown
and prompt events are better handled by event handlers that know how to prompt
users for data. See App::Info::Handler::Prompt
for an example of that functionality.
.PP
Upon loading, App::Info::Handler::Carp registers itself with
App::Info::Handler, setting up a number of strings that can be passed to an
App::Info concrete subclass constructor. These strings are shortcuts that
tell App::Info how to create the proper App::Info::Handler::Carp object
for handling events. The registered strings are:
.IP "carp" 4
.IX Item "carp"
Passes the event message to \f(CW\*(C`Carp::carp()\*(C'\fR.
.IP "warn" 4
.IX Item "warn"
An alias for \*(L"carp\*(R".
.IP "croak" 4
.IX Item "croak"
Passes the event message to \f(CW\*(C`Carp::croak()\*(C'\fR.
.IP "die" 4
.IX Item "die"
An alias for \*(L"croak\*(R".
.IP "cluck" 4
.IX Item "cluck"
Passes the event message to \f(CW\*(C`Carp::cluck()\*(C'\fR.
.IP "confess" 4
.IX Item "confess"
Passes the event message to \f(CW\*(C`Carp::confess()\*(C'\fR.
.SH "INTERFACE"
.IX Header "INTERFACE"
.SS "Constructor"
.IX Subsection "Constructor"
\fInew\fR
.IX Subsection "new"
.PP
.Vb 3
\& my $carp_handler = App::Info::Handler::Carp\->new;
\& $carp_handler = App::Info::Handler::Carp\->new( level => \*(Aqcarp\*(Aq );
\& my $croak_handler = App::Info::Handler::Carp\->new( level => \*(Aqcroak\*(Aq );
.Ve
.PP
Constructs a new App::Info::Handler::Carp object and returns it. It can take a
single parameterized argument, \f(CW\*(C`level\*(C'\fR, which can be any one of the following
values:
.IP "carp" 4
.IX Item "carp"
Constructs a App::Info::Handler::Carp object that passes the event message to
\&\f(CW\*(C`Carp::carp()\*(C'\fR.
.IP "warn" 4
.IX Item "warn"
An alias for \*(L"carp\*(R".
.IP "croak" 4
.IX Item "croak"
Constructs a App::Info::Handler::Carp object that passes the event message to
\&\f(CW\*(C`Carp::croak()\*(C'\fR.
.IP "die" 4
.IX Item "die"
An alias for \*(L"croak\*(R".
.IP "cluck" 4
.IX Item "cluck"
Constructs a App::Info::Handler::Carp object that passes the event message to
\&\f(CW\*(C`Carp::cluck()\*(C'\fR.
.IP "confess" 4
.IX Item "confess"
Constructs a App::Info::Handler::Carp object that passes the event message to
\&\f(CW\*(C`Carp::confess()\*(C'\fR.
.PP
If the \f(CW\*(C`level\*(C'\fR parameter is not passed, \f(CW\*(C`new()\*(C'\fR will default to creating an
App::Info::Handler::Carp object that passes App::Info event messages to
\&\f(CW\*(C`Carp::carp()\*(C'\fR.
.SH "SUPPORT"
.IX Header "SUPPORT"
This module is stored in an open GitHub
repository . Feel free to fork and
contribute!
.PP
Please file bug reports via GitHub
Issues or by sending mail to
bug\-App\-Info@rt.cpan.org .
.SH "AUTHOR"
.IX Header "AUTHOR"
David E. Wheeler
.SH "SEE ALSO"
.IX Header "SEE ALSO"
App::Info documents the event handling interface.
.PP
Carp of documents the functions used by this class.
.PP
App::Info::Handler::Print handles events by
printing their messages to a file handle.
.PP
App::Info::Handler::Prompt offers event handling
more appropriate for unknown and confirm events.
.PP
App::Info::Handler describes how to implement custom
App::Info event handlers.
.SH "COPYRIGHT AND LICENSE"
.IX Header "COPYRIGHT AND LICENSE"
Copyright (c) 2002\-2011, David E. Wheeler. Some Rights Reserved.
.PP
This module is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.