summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man3pm/Fatal.3pm
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/mageia-cauldron/man3pm/Fatal.3pm')
-rw-r--r--upstream/mageia-cauldron/man3pm/Fatal.3pm180
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.