diff options
Diffstat (limited to 'upstream/mageia-cauldron/man3pm/Fatal.3pm')
-rw-r--r-- | upstream/mageia-cauldron/man3pm/Fatal.3pm | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3pm/Fatal.3pm b/upstream/mageia-cauldron/man3pm/Fatal.3pm new file mode 100644 index 00000000..f54173d3 --- /dev/null +++ b/upstream/mageia-cauldron/man3pm/Fatal.3pm @@ -0,0 +1,180 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" 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 +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. 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 +.\" ======================================================================== +.\" +.IX Title "Fatal 3pm" +.TH Fatal 3pm 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" 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 +Fatal \- Replace functions with equivalents which succeed or die +.SH SYNOPSIS +.IX Header "SYNOPSIS" +.Vb 1 +\& use Fatal qw(open close); +\& +\& open(my $fh, "<", $filename); # No need to check errors! +\& +\& use File::Copy qw(move); +\& use Fatal qw(move); +\& +\& move($file1, $file2); # No need to check errors! +\& +\& sub juggle { . . . } +\& Fatal\->import(\*(Aqjuggle\*(Aq); +.Ve +.SH "BEST PRACTICE" +.IX Header "BEST PRACTICE" +\&\fBFatal has been obsoleted by the new autodie pragma.\fR Please use +autodie in preference to \f(CW\*(C`Fatal\*(C'\fR. autodie supports lexical scoping, +throws real exception objects, and provides much nicer error messages. +.PP +The use of \f(CW\*(C`:void\*(C'\fR with Fatal is discouraged. +.SH DESCRIPTION +.IX Header "DESCRIPTION" +\&\f(CW\*(C`Fatal\*(C'\fR provides a way to conveniently replace +functions which normally return a false value when they fail with +equivalents which raise exceptions if they are not successful. This +lets you use these functions without having to test their return +values explicitly on each call. Exceptions can be caught using +\&\f(CW\*(C`eval{}\*(C'\fR. See perlfunc and perlvar for details. +.PP +The do-or-die equivalents are set up simply by calling Fatal's +\&\f(CW\*(C`import\*(C'\fR routine, passing it the names of the functions to be +replaced. You may wrap both user-defined functions and overridable +CORE operators (except \f(CW\*(C`exec\*(C'\fR, \f(CW\*(C`system\*(C'\fR, \f(CW\*(C`print\*(C'\fR, or any other +built-in that cannot be expressed via prototypes) in this way. +.PP +If the symbol \f(CW\*(C`:void\*(C'\fR appears in the import list, then functions +named later in that import list raise an exception only when +these are called in void context\-\-that is, when their return +values are ignored. For example +.PP +.Vb 1 +\& use Fatal qw/:void open close/; +\& +\& # properly checked, so no exception raised on error +\& if (not open(my $fh, \*(Aq<\*(Aq, \*(Aq/bogotic\*(Aq) { +\& warn "Can\*(Aqt open /bogotic: $!"; +\& } +\& +\& # not checked, so error raises an exception +\& close FH; +.Ve +.PP +The use of \f(CW\*(C`:void\*(C'\fR is discouraged, as it can result in exceptions +not being thrown if you \fIaccidentally\fR call a method without +void context. Use autodie instead if you need to be able to +disable autodying/Fatal behaviour for a small block of code. +.SH DIAGNOSTICS +.IX Header "DIAGNOSTICS" +.ie n .IP "Bad subroutine name for Fatal: %s" 4 +.el .IP "Bad subroutine name for Fatal: \f(CW%s\fR" 4 +.IX Item "Bad subroutine name for Fatal: %s" +You've called \f(CW\*(C`Fatal\*(C'\fR with an argument that doesn't look like +a subroutine name, nor a switch that this version of Fatal +understands. +.ie n .IP "%s is not a Perl subroutine" 4 +.el .IP "\f(CW%s\fR is not a Perl subroutine" 4 +.IX Item "%s is not a Perl subroutine" +You've asked \f(CW\*(C`Fatal\*(C'\fR to try and replace a subroutine which does not +exist, or has not yet been defined. +.ie n .IP "%s is neither a builtin, nor a Perl subroutine" 4 +.el .IP "\f(CW%s\fR is neither a builtin, nor a Perl subroutine" 4 +.IX Item "%s is neither a builtin, nor a Perl subroutine" +You've asked \f(CW\*(C`Fatal\*(C'\fR to replace a subroutine, but it's not a Perl +built-in, and \f(CW\*(C`Fatal\*(C'\fR couldn't find it as a regular subroutine. +It either doesn't exist or has not yet been defined. +.ie n .IP "Cannot make the non-overridable %s fatal" 4 +.el .IP "Cannot make the non-overridable \f(CW%s\fR fatal" 4 +.IX Item "Cannot make the non-overridable %s fatal" +You've tried to use \f(CW\*(C`Fatal\*(C'\fR on a Perl built-in that can't be +overridden, such as \f(CW\*(C`print\*(C'\fR or \f(CW\*(C`system\*(C'\fR, which means that +\&\f(CW\*(C`Fatal\*(C'\fR can't help you, although some other modules might. +See the "SEE ALSO" section of this documentation. +.ie n .IP "Internal error: %s" 4 +.el .IP "Internal error: \f(CW%s\fR" 4 +.IX Item "Internal error: %s" +You've found a bug in \f(CW\*(C`Fatal\*(C'\fR. Please report it using +the \f(CW\*(C`perlbug\*(C'\fR command. +.SH BUGS +.IX Header "BUGS" +\&\f(CW\*(C`Fatal\*(C'\fR clobbers the context in which a function is called and always +makes it a scalar context, except when the \f(CW\*(C`:void\*(C'\fR tag is used. +This problem does not exist in autodie. +.PP +"Used only once" warnings can be generated when \f(CW\*(C`autodie\*(C'\fR or \f(CW\*(C`Fatal\*(C'\fR +is used with package filehandles (eg, \f(CW\*(C`FILE\*(C'\fR). It's strongly recommended +you use scalar filehandles instead. +.SH AUTHOR +.IX Header "AUTHOR" +Original module by Lionel Cons (CERN). +.PP +Prototype updates by Ilya Zakharevich <ilya@math.ohio\-state.edu>. +.PP +autodie support, bugfixes, extended diagnostics, \f(CW\*(C`system\*(C'\fR +support, and major overhauling by Paul Fenwick <pjf@perltraining.com.au> +.SH LICENSE +.IX Header "LICENSE" +This module is free software, you may distribute it under the +same terms as Perl itself. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +autodie for a nicer way to use lexical Fatal. +.PP +IPC::System::Simple for a similar idea for calls to \f(CWsystem()\fR +and backticks. |