summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man3pm/experimental.3pm
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/mageia-cauldron/man3pm/experimental.3pm')
-rw-r--r--upstream/mageia-cauldron/man3pm/experimental.3pm237
1 files changed, 237 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3pm/experimental.3pm b/upstream/mageia-cauldron/man3pm/experimental.3pm
new file mode 100644
index 00000000..3faf0dca
--- /dev/null
+++ b/upstream/mageia-cauldron/man3pm/experimental.3pm
@@ -0,0 +1,237 @@
+.\" -*- 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 "experimental 3pm"
+.TH experimental 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
+experimental \- Experimental features made easy
+.SH VERSION
+.IX Header "VERSION"
+version 0.031
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 2
+\& use experimental \*(Aqlexical_subs\*(Aq, \*(Aqsignatures\*(Aq;
+\& my sub plus_one($value) { $value + 1 }
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+This pragma provides an easy and convenient way to enable or disable
+experimental features.
+.PP
+Every version of perl has some number of features present but considered
+"experimental." For much of the life of Perl 5, this was only a designation
+found in the documentation. Starting in Perl v5.10.0, and more aggressively in
+v5.18.0, experimental features were placed behind pragmata used to enable the
+feature and disable associated warnings.
+.PP
+The \f(CW\*(C`experimental\*(C'\fR pragma exists to combine the required incantations into a
+single interface stable across releases of perl. For every experimental
+feature, this should enable the feature and silence warnings for the enclosing
+lexical scope:
+.PP
+.Vb 1
+\& use experimental \*(Aqfeature\-name\*(Aq;
+.Ve
+.PP
+To disable the feature and, if applicable, re-enable any warnings, use:
+.PP
+.Vb 1
+\& no experimental \*(Aqfeature\-name\*(Aq;
+.Ve
+.PP
+The supported features, documented further below, are:
+.IP \(bu 4
+\&\f(CW\*(C`args_array_with_signatures\*(C'\fR \- allow \f(CW@_\fR to be used in signatured subs.
+.Sp
+This is supported on perl 5.20.0 and above, but is likely to be removed in the future.
+.IP \(bu 4
+\&\f(CW\*(C`array_base\*(C'\fR \- allow the use of \f(CW$[\fR to change the starting index of \f(CW@array\fR.
+.Sp
+This was removed in perl 5.30.0.
+.IP \(bu 4
+\&\f(CW\*(C`autoderef\*(C'\fR \- allow push, each, keys, and other built-ins on references.
+.Sp
+This was added in perl 5.14.0 and removed in perl 5.24.0.
+.IP \(bu 4
+\&\f(CW\*(C`bitwise\*(C'\fR \- allow the new stringwise bit operators
+.Sp
+This was added in perl 5.22.0.
+.IP \(bu 4
+\&\f(CW\*(C`builtin\*(C'\fR \- allow the use of the functions in the builtin:: namespace
+.Sp
+This was added in perl 5.36.0
+.IP \(bu 4
+\&\f(CW\*(C`const_attr\*(C'\fR \- allow the :const attribute on subs
+.Sp
+This was added in perl 5.22.0.
+.IP \(bu 4
+\&\f(CW\*(C`declared_refs\*(C'\fR \- enables aliasing via assignment to references
+.Sp
+This was added in perl 5.26.0.
+.IP \(bu 4
+\&\f(CW\*(C`defer\*(C'\fR \- enables the use of defer blocks
+.Sp
+This was added in perl 5.36.0
+.IP \(bu 4
+\&\f(CW\*(C`extra_paired_delimiters\*(C'\fR \- enables the use of more paired string delimiters than the
+traditional four, \f(CW\*(C`<\ \ >\*(C'\fR, \f(CW\*(C`(\ )\*(C'\fR, \f(CW\*(C`{\ }\*(C'\fR, and \f(CW\*(C`[\ ]\*(C'\fR.
+.Sp
+This was added in perl 5.36.
+.IP \(bu 4
+\&\f(CW\*(C`for_list\*(C'\fR \- allows iterating over multiple values at a time with \f(CW\*(C`for\*(C'\fR
+.Sp
+This was added in perl 5.36.0
+.IP \(bu 4
+\&\f(CW\*(C`isa\*(C'\fR \- allow the use of the \f(CW\*(C`isa\*(C'\fR infix operator
+.Sp
+This was added in perl 5.32.0.
+.IP \(bu 4
+\&\f(CW\*(C`lexical_topic\*(C'\fR \- allow the use of lexical \f(CW$_\fR via \f(CW\*(C`my $_\*(C'\fR.
+.Sp
+This was added in perl 5.10.0 and removed in perl 5.24.0.
+.IP \(bu 4
+\&\f(CW\*(C`lexical_subs\*(C'\fR \- allow the use of lexical subroutines.
+.Sp
+This was added in 5.18.0, and became non-experimental (and always enabled) in 5.26.0.
+.IP \(bu 4
+\&\f(CW\*(C`postderef\*(C'\fR \- allow the use of postfix dereferencing expressions
+.Sp
+This was added in perl 5.20.0, and became non-experimental (and always enabled) in 5.24.0.
+.IP \(bu 4
+\&\f(CW\*(C`postderef_qq\*(C'\fR \- allow the use of postfix dereferencing expressions inside interpolating strings
+.Sp
+This was added in perl 5.20.0, and became non-experimental (and always enabled) in 5.24.0.
+.IP \(bu 4
+\&\f(CW\*(C`re_strict\*(C'\fR \- enables strict mode in regular expressions
+.Sp
+This was added in perl 5.22.0.
+.IP \(bu 4
+\&\f(CW\*(C`refaliasing\*(C'\fR \- allow aliasing via \f(CW\*(C`\e$x = \e$y\*(C'\fR
+.Sp
+This was added in perl 5.22.0.
+.IP \(bu 4
+\&\f(CW\*(C`regex_sets\*(C'\fR \- allow extended bracketed character classes in regexps
+.Sp
+This was added in perl 5.18.0.
+.IP \(bu 4
+\&\f(CW\*(C`signatures\*(C'\fR \- allow subroutine signatures (for named arguments)
+.Sp
+This was added in perl 5.20.0.
+.IP \(bu 4
+\&\f(CW\*(C`smartmatch\*(C'\fR \- allow the use of \f(CW\*(C`~~\*(C'\fR
+.Sp
+This was added in perl 5.10.0, but it should be noted there are significant
+incompatibilities between 5.10.0 and 5.10.1.
+.Sp
+The feature is going to be deprecated in perl 5.38.0, and removed in 5.42.0.
+.IP \(bu 4
+\&\f(CW\*(C`switch\*(C'\fR \- allow the use of \f(CW\*(C`~~\*(C'\fR, given, and when
+.Sp
+This was added in perl 5.10.0.
+.Sp
+The feature is going to be deprecated in perl 5.38.0, and removed in 5.42.0.
+.IP \(bu 4
+\&\f(CW\*(C`try\*(C'\fR \- allow the use of \f(CW\*(C`try\*(C'\fR and \f(CW\*(C`catch\*(C'\fR
+.Sp
+This was added in perl 5.34.0
+.IP \(bu 4
+\&\f(CW\*(C`win32_perlio\*(C'\fR \- allows the use of the :win32 IO layer.
+.Sp
+This was added on perl 5.22.0.
+.SS "Ordering matters"
+.IX Subsection "Ordering matters"
+Using this pragma to 'enable an experimental feature' is another way of saying
+that this pragma will disable the warnings which would result from using that
+feature. Therefore, the order in which pragmas are applied is important. In
+particular, you probably want to enable experimental features \fIafter\fR you
+enable warnings:
+.PP
+.Vb 2
+\& use warnings;
+\& use experimental \*(Aqsmartmatch\*(Aq;
+.Ve
+.PP
+You also need to take care with modules that enable warnings for you. A common
+example being Moose. In this example, warnings for the 'smartmatch' feature are
+first turned on by the warnings pragma, off by the experimental pragma and back
+on again by the Moose module (fix is to switch the last two lines):
+.PP
+.Vb 3
+\& use warnings;
+\& use experimental \*(Aqsmartmatch\*(Aq;
+\& use Moose;
+.Ve
+.SS Disclaimer
+.IX Subsection "Disclaimer"
+Because of the nature of the features it enables, forward compatibility can not
+be guaranteed in any way.
+.SH "SEE ALSO"
+.IX Header "SEE ALSO"
+perlexperiment contains more information about experimental features.
+.SH AUTHOR
+.IX Header "AUTHOR"
+Leon Timmermans <leont@cpan.org>
+.SH "COPYRIGHT AND LICENSE"
+.IX Header "COPYRIGHT AND LICENSE"
+This software is copyright (c) 2013 by Leon Timmermans.
+.PP
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.