summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man3pm/feature.3pm
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/mageia-cauldron/man3pm/feature.3pm
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/mageia-cauldron/man3pm/feature.3pm')
-rw-r--r--upstream/mageia-cauldron/man3pm/feature.3pm1085
1 files changed, 1085 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3pm/feature.3pm b/upstream/mageia-cauldron/man3pm/feature.3pm
new file mode 100644
index 00000000..960512b9
--- /dev/null
+++ b/upstream/mageia-cauldron/man3pm/feature.3pm
@@ -0,0 +1,1085 @@
+.\" -*- 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 "feature 3pm"
+.TH feature 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
+feature \- Perl pragma to enable new features
+.SH SYNOPSIS
+.IX Header "SYNOPSIS"
+.Vb 1
+\& use feature qw(fc say);
+\&
+\& # Without the "use feature" above, this code would not be able to find
+\& # the built\-ins "say" or "fc":
+\& say "The case\-folded version of $x is: " . fc $x;
+\&
+\&
+\& # set features to match the :5.36 bundle, which may turn off or on
+\& # multiple features (see "FEATURE BUNDLES" below)
+\& use feature \*(Aq:5.36\*(Aq;
+\&
+\&
+\& # implicitly loads :5.36 feature bundle
+\& use v5.36;
+.Ve
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+It is usually impossible to add new syntax to Perl without breaking
+some existing programs. This pragma provides a way to minimize that
+risk. New syntactic constructs, or new semantic meanings to older
+constructs, can be enabled by \f(CW\*(C`use feature \*(Aqfoo\*(Aq\*(C'\fR, and will be parsed
+only when the appropriate feature pragma is in scope. (Nevertheless, the
+\&\f(CW\*(C`CORE::\*(C'\fR prefix provides access to all Perl keywords, regardless of this
+pragma.)
+.SS "Lexical effect"
+.IX Subsection "Lexical effect"
+Like other pragmas (\f(CW\*(C`use strict\*(C'\fR, for example), features have a lexical
+effect. \f(CW\*(C`use feature qw(foo)\*(C'\fR will only make the feature "foo" available
+from that point to the end of the enclosing block.
+.PP
+.Vb 5
+\& {
+\& use feature \*(Aqsay\*(Aq;
+\& say "say is available here";
+\& }
+\& print "But not here.\en";
+.Ve
+.ie n .SS """no feature"""
+.el .SS "\f(CWno feature\fP"
+.IX Subsection "no feature"
+Features can also be turned off by using \f(CW\*(C`no feature "foo"\*(C'\fR. This too
+has lexical effect.
+.PP
+.Vb 7
+\& use feature \*(Aqsay\*(Aq;
+\& say "say is available here";
+\& {
+\& no feature \*(Aqsay\*(Aq;
+\& print "But not here.\en";
+\& }
+\& say "Yet it is here.";
+.Ve
+.PP
+\&\f(CW\*(C`no feature\*(C'\fR with no features specified will reset to the default group. To
+disable \fIall\fR features (an unusual request!) use \f(CW\*(C`no feature \*(Aq:all\*(Aq\*(C'\fR.
+.SH "AVAILABLE FEATURES"
+.IX Header "AVAILABLE FEATURES"
+Read "FEATURE BUNDLES" for the feature cheat sheet summary.
+.SS "The 'say' feature"
+.IX Subsection "The 'say' feature"
+\&\f(CW\*(C`use feature \*(Aqsay\*(Aq\*(C'\fR tells the compiler to enable the Raku-inspired
+\&\f(CW\*(C`say\*(C'\fR function.
+.PP
+See "say" in perlfunc for details.
+.PP
+This feature is available starting with Perl 5.10.
+.SS "The 'state' feature"
+.IX Subsection "The 'state' feature"
+\&\f(CW\*(C`use feature \*(Aqstate\*(Aq\*(C'\fR tells the compiler to enable \f(CW\*(C`state\*(C'\fR
+variables.
+.PP
+See "Persistent Private Variables" in perlsub for details.
+.PP
+This feature is available starting with Perl 5.10.
+.SS "The 'switch' feature"
+.IX Subsection "The 'switch' feature"
+\&\fBWARNING\fR: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+.PP
+.Vb 1
+\& no warnings "experimental::smartmatch";
+.Ve
+.PP
+\&\f(CW\*(C`use feature \*(Aqswitch\*(Aq\*(C'\fR tells the compiler to enable the Raku
+given/when construct.
+.PP
+See "Switch Statements" in perlsyn for details.
+.PP
+This feature is available starting with Perl 5.10.
+It is deprecated starting with Perl 5.38, and using
+\&\f(CW\*(C`given\*(C'\fR, \f(CW\*(C`when\*(C'\fR or smartmatch will throw a warning.
+It will be removed in Perl 5.42.
+.SS "The 'unicode_strings' feature"
+.IX Subsection "The 'unicode_strings' feature"
+\&\f(CW\*(C`use feature \*(Aqunicode_strings\*(Aq\*(C'\fR tells the compiler to use Unicode rules
+in all string operations executed within its scope (unless they are also
+within the scope of either \f(CW\*(C`use locale\*(C'\fR or \f(CW\*(C`use bytes\*(C'\fR). The same applies
+to all regular expressions compiled within the scope, even if executed outside
+it. It does not change the internal representation of strings, but only how
+they are interpreted.
+.PP
+\&\f(CW\*(C`no feature \*(Aqunicode_strings\*(Aq\*(C'\fR tells the compiler to use the traditional
+Perl rules wherein the native character set rules is used unless it is
+clear to Perl that Unicode is desired. This can lead to some surprises
+when the behavior suddenly changes. (See
+"The "Unicode Bug"" in perlunicode for details.) For this reason, if you are
+potentially using Unicode in your program, the
+\&\f(CW\*(C`use feature \*(Aqunicode_strings\*(Aq\*(C'\fR subpragma is \fBstrongly\fR recommended.
+.PP
+This feature is available starting with Perl 5.12; was almost fully
+implemented in Perl 5.14; and extended in Perl 5.16 to cover \f(CW\*(C`quotemeta\*(C'\fR;
+was extended further in Perl 5.26 to cover the range
+operator; and was extended again in Perl 5.28 to
+cover special-cased whitespace splitting.
+.SS "The 'unicode_eval' and 'evalbytes' features"
+.IX Subsection "The 'unicode_eval' and 'evalbytes' features"
+Together, these two features are intended to replace the legacy string
+\&\f(CW\*(C`eval\*(C'\fR function, which behaves problematically in some instances. They are
+available starting with Perl 5.16, and are enabled by default by a
+\&\f(CW\*(C`use\ 5.16\*(C'\fR or higher declaration.
+.PP
+\&\f(CW\*(C`unicode_eval\*(C'\fR changes the behavior of plain string \f(CW\*(C`eval\*(C'\fR to work more
+consistently, especially in the Unicode world. Certain (mis)behaviors
+couldn't be changed without breaking some things that had come to rely on
+them, so the feature can be enabled and disabled. Details are at
+"Under the "unicode_eval" feature" in perlfunc.
+.PP
+\&\f(CW\*(C`evalbytes\*(C'\fR is like string \f(CW\*(C`eval\*(C'\fR, but it treats its argument as a byte
+string. Details are at "evalbytes EXPR" in perlfunc. Without a
+\&\f(CW\*(C`use\ feature\ \*(Aqevalbytes\*(Aq\*(C'\fR nor a \f(CW\*(C`use\ v5.16\*(C'\fR (or higher) declaration in
+the current scope, you can still access it by instead writing
+\&\f(CW\*(C`CORE::evalbytes\*(C'\fR.
+.SS "The 'current_sub' feature"
+.IX Subsection "The 'current_sub' feature"
+This provides the \f(CW\*(C`_\|_SUB_\|_\*(C'\fR token that returns a reference to the current
+subroutine or \f(CW\*(C`undef\*(C'\fR outside of a subroutine.
+.PP
+This feature is available starting with Perl 5.16.
+.SS "The 'array_base' feature"
+.IX Subsection "The 'array_base' feature"
+This feature supported the legacy \f(CW$[\fR variable. See "$[" in perlvar.
+It was on by default but disabled under \f(CW\*(C`use v5.16\*(C'\fR (see
+"IMPLICIT LOADING", below) and unavailable since perl 5.30.
+.PP
+This feature is available under this name starting with Perl 5.16. In
+previous versions, it was simply on all the time, and this pragma knew
+nothing about it.
+.SS "The 'fc' feature"
+.IX Subsection "The 'fc' feature"
+\&\f(CW\*(C`use feature \*(Aqfc\*(Aq\*(C'\fR tells the compiler to enable the \f(CW\*(C`fc\*(C'\fR function,
+which implements Unicode casefolding.
+.PP
+See "fc" in perlfunc for details.
+.PP
+This feature is available from Perl 5.16 onwards.
+.SS "The 'lexical_subs' feature"
+.IX Subsection "The 'lexical_subs' feature"
+In Perl versions prior to 5.26, this feature enabled
+declaration of subroutines via \f(CW\*(C`my sub foo\*(C'\fR, \f(CW\*(C`state sub foo\*(C'\fR
+and \f(CW\*(C`our sub foo\*(C'\fR syntax. See "Lexical Subroutines" in perlsub for details.
+.PP
+This feature is available from Perl 5.18 onwards. From Perl 5.18 to 5.24,
+it was classed as experimental, and Perl emitted a warning for its
+usage, except when explicitly disabled:
+.PP
+.Vb 1
+\& no warnings "experimental::lexical_subs";
+.Ve
+.PP
+As of Perl 5.26, use of this feature no longer triggers a warning, though
+the \f(CW\*(C`experimental::lexical_subs\*(C'\fR warning category still exists (for
+compatibility with code that disables it). In addition, this syntax is
+not only no longer experimental, but it is enabled for all Perl code,
+regardless of what feature declarations are in scope.
+.SS "The 'postderef' and 'postderef_qq' features"
+.IX Subsection "The 'postderef' and 'postderef_qq' features"
+The 'postderef_qq' feature extends the applicability of postfix
+dereference syntax so that
+postfix array dereference, postfix scalar dereference, and
+postfix array highest index access are available in double-quotish interpolations.
+For example, it makes the following two statements equivalent:
+.PP
+.Vb 2
+\& my $s = "[@{ $h\->{a} }]";
+\& my $s = "[$h\->{a}\->@*]";
+.Ve
+.PP
+This feature is available from Perl 5.20 onwards. In Perl 5.20 and 5.22, it
+was classed as experimental, and Perl emitted a warning for its
+usage, except when explicitly disabled:
+.PP
+.Vb 1
+\& no warnings "experimental::postderef";
+.Ve
+.PP
+As of Perl 5.24, use of this feature no longer triggers a warning, though
+the \f(CW\*(C`experimental::postderef\*(C'\fR warning category still exists (for
+compatibility with code that disables it).
+.PP
+The 'postderef' feature was used in Perl 5.20 and Perl 5.22 to enable
+postfix dereference syntax outside double-quotish interpolations. In those
+versions, using it triggered the \f(CW\*(C`experimental::postderef\*(C'\fR warning in the
+same way as the 'postderef_qq' feature did. As of Perl 5.24, this syntax is
+not only no longer experimental, but it is enabled for all Perl code,
+regardless of what feature declarations are in scope.
+.SS "The 'signatures' feature"
+.IX Subsection "The 'signatures' feature"
+This enables syntax for declaring subroutine arguments as lexical variables.
+For example, for this subroutine:
+.PP
+.Vb 3
+\& sub foo ($left, $right) {
+\& return $left + $right;
+\& }
+.Ve
+.PP
+Calling \f(CW\*(C`foo(3, 7)\*(C'\fR will assign \f(CW3\fR into \f(CW$left\fR and \f(CW7\fR into \f(CW$right\fR.
+.PP
+See "Signatures" in perlsub for details.
+.PP
+This feature is available from Perl 5.20 onwards. From Perl 5.20 to 5.34,
+it was classed as experimental, and Perl emitted a warning for its usage,
+except when explicitly disabled:
+.PP
+.Vb 1
+\& no warnings "experimental::signatures";
+.Ve
+.PP
+As of Perl 5.36, use of this feature no longer triggers a warning, though the
+\&\f(CW\*(C`experimental::signatures\*(C'\fR warning category still exists (for compatibility
+with code that disables it). This feature is now considered stable, and is
+enabled automatically by \f(CW\*(C`use v5.36\*(C'\fR (or higher).
+.SS "The 'refaliasing' feature"
+.IX Subsection "The 'refaliasing' feature"
+\&\fBWARNING\fR: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+.PP
+.Vb 1
+\& no warnings "experimental::refaliasing";
+.Ve
+.PP
+This enables aliasing via assignment to references:
+.PP
+.Vb 7
+\& \e$a = \e$b; # $a and $b now point to the same scalar
+\& \e@a = \e@b; # to the same array
+\& \e%a = \e%b;
+\& \e&a = \e&b;
+\& foreach \e%hash (@array_of_hash_refs) {
+\& ...
+\& }
+.Ve
+.PP
+See "Assigning to References" in perlref for details.
+.PP
+This feature is available from Perl 5.22 onwards.
+.SS "The 'bitwise' feature"
+.IX Subsection "The 'bitwise' feature"
+This makes the four standard bitwise operators (\f(CW\*(C`& | ^ ~\*(C'\fR) treat their
+operands consistently as numbers, and introduces four new dotted operators
+(\f(CW\*(C`&. |. ^. ~.\*(C'\fR) that treat their operands consistently as strings. The
+same applies to the assignment variants (\f(CW\*(C`&= |= ^= &.= |.= ^.=\*(C'\fR).
+.PP
+See "Bitwise String Operators" in perlop for details.
+.PP
+This feature is available from Perl 5.22 onwards. Starting in Perl 5.28,
+\&\f(CW\*(C`use v5.28\*(C'\fR will enable the feature. Before 5.28, it was still
+experimental and would emit a warning in the "experimental::bitwise"
+category.
+.SS "The 'declared_refs' feature"
+.IX Subsection "The 'declared_refs' feature"
+\&\fBWARNING\fR: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+.PP
+.Vb 1
+\& no warnings "experimental::declared_refs";
+.Ve
+.PP
+This allows a reference to a variable to be declared with \f(CW\*(C`my\*(C'\fR, \f(CW\*(C`state\*(C'\fR,
+or \f(CW\*(C`our\*(C'\fR, or localized with \f(CW\*(C`local\*(C'\fR. It is intended mainly for use in
+conjunction with the "refaliasing" feature. See "Declaring a
+Reference to a Variable" in perlref for examples.
+.PP
+This feature is available from Perl 5.26 onwards.
+.SS "The 'isa' feature"
+.IX Subsection "The 'isa' feature"
+This allows the use of the \f(CW\*(C`isa\*(C'\fR infix operator, which tests whether the
+scalar given by the left operand is an object of the class given by the
+right operand. See "Class Instance Operator" in perlop for more details.
+.PP
+This feature is available from Perl 5.32 onwards. From Perl 5.32 to 5.34,
+it was classed as experimental, and Perl emitted a warning for its usage,
+except when explicitly disabled:
+.PP
+.Vb 1
+\& no warnings "experimental::isa";
+.Ve
+.PP
+As of Perl 5.36, use of this feature no longer triggers a warning (though the
+\&\f(CW\*(C`experimental::isa\*(C'\fR warning category stilll exists for compatibility with
+code that disables it). This feature is now considered stable, and is enabled
+automatically by \f(CW\*(C`use v5.36\*(C'\fR (or higher).
+.SS "The 'indirect' feature"
+.IX Subsection "The 'indirect' feature"
+This feature allows the use of indirect object
+syntax for method calls, e.g. \f(CW\*(C`new
+Foo 1, 2;\*(C'\fR. It is enabled by default, but can be turned off to
+disallow indirect object syntax.
+.PP
+This feature is available under this name from Perl 5.32 onwards. In
+previous versions, it was simply on all the time. To disallow (or
+warn on) indirect object syntax on older Perls, see the indirect
+CPAN module.
+.SS "The 'multidimensional' feature"
+.IX Subsection "The 'multidimensional' feature"
+This feature enables multidimensional array emulation, a perl 4 (or
+earlier) feature that was used to emulate multidimensional arrays with
+hashes. This works by converting code like \f(CW$foo{$x, $y}\fR into
+\&\f(CW$foo{join($;, $x, $y)}\fR. It is enabled by default, but can be
+turned off to disable multidimensional array emulation.
+.PP
+When this feature is disabled the syntax that is normally replaced
+will report a compilation error.
+.PP
+This feature is available under this name from Perl 5.34 onwards. In
+previous versions, it was simply on all the time.
+.PP
+You can use the multidimensional module on CPAN to disable
+multidimensional array emulation for older versions of Perl.
+.SS "The 'bareword_filehandles' feature"
+.IX Subsection "The 'bareword_filehandles' feature"
+This feature enables bareword filehandles for builtin functions
+operations, a generally discouraged practice. It is enabled by
+default, but can be turned off to disable bareword filehandles, except
+for the exceptions listed below.
+.PP
+The perl built-in filehandles \f(CW\*(C`STDIN\*(C'\fR, \f(CW\*(C`STDOUT\*(C'\fR, \f(CW\*(C`STDERR\*(C'\fR, \f(CW\*(C`DATA\*(C'\fR,
+\&\f(CW\*(C`ARGV\*(C'\fR, \f(CW\*(C`ARGVOUT\*(C'\fR and the special \f(CW\*(C`_\*(C'\fR are always enabled.
+.PP
+This feature is enabled under this name from Perl 5.34 onwards. In
+previous versions it was simply on all the time.
+.PP
+You can use the bareword::filehandles module on CPAN to disable
+bareword filehandles for older versions of perl.
+.SS "The 'try' feature"
+.IX Subsection "The 'try' feature"
+\&\fBWARNING\fR: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+.PP
+.Vb 1
+\& no warnings "experimental::try";
+.Ve
+.PP
+This feature enables the \f(CW\*(C`try\*(C'\fR and \f(CW\*(C`catch\*(C'\fR syntax, which allows exception
+handling, where exceptions thrown from the body of the block introduced with
+\&\f(CW\*(C`try\*(C'\fR are caught by executing the body of the \f(CW\*(C`catch\*(C'\fR block.
+.PP
+For more information, see "Try Catch Exception Handling" in perlsyn.
+.SS "The 'defer' feature"
+.IX Subsection "The 'defer' feature"
+\&\fBWARNING\fR: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+.PP
+.Vb 1
+\& no warnings "experimental::defer";
+.Ve
+.PP
+This feature enables the \f(CW\*(C`defer\*(C'\fR block syntax, which allows a block of code
+to be deferred until when the flow of control leaves the block which contained
+it. For more details, see "defer" in perlsyn.
+.SS "The 'extra_paired_delimiters' feature"
+.IX Subsection "The 'extra_paired_delimiters' feature"
+\&\fBWARNING\fR: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+.PP
+.Vb 1
+\& no warnings "experimental::extra_paired_delimiters";
+.Ve
+.PP
+This feature 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. When
+this feature is on, for example, you can say \f(CW\*(C`qr«pat»\*(C'\fR.
+.PP
+As with any usage of non-ASCII delimiters in a UTF\-8\-encoded source file, you
+will want to ensure the parser will decode the source code from UTF\-8 bytes
+with a declaration such as \f(CW\*(C`use utf8\*(C'\fR.
+.PP
+This feature is available starting in Perl 5.36.
+.PP
+The complete list of accepted paired delimiters as of Unicode 14.0 is:
+.PP
+.Vb 10
+\& ( ) U+0028, U+0029 LEFT/RIGHT PARENTHESIS
+\& < > U+003C, U+003E LESS\-THAN/GREATER\-THAN SIGN
+\& [ ] U+005B, U+005D LEFT/RIGHT SQUARE BRACKET
+\& { } U+007B, U+007D LEFT/RIGHT CURLY BRACKET
+\& « » U+00AB, U+00BB LEFT/RIGHT\-POINTING DOUBLE ANGLE QUOTATION MARK
+\& » « U+00BB, U+00AB RIGHT/LEFT\-POINTING DOUBLE ANGLE QUOTATION MARK
+\& ܆ ܇ U+0706, U+0707 SYRIAC COLON SKEWED LEFT/RIGHT
+\& ༺ ༻ U+0F3A, U+0F3B TIBETAN MARK GUG RTAGS GYON, TIBETAN MARK GUG
+\& RTAGS GYAS
+\& ༼ ༽ U+0F3C, U+0F3D TIBETAN MARK ANG KHANG GYON, TIBETAN MARK ANG
+\& KHANG GYAS
+\& ᚛ ᚜ U+169B, U+169C OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK
+\& ‘ ’ U+2018, U+2019 LEFT/RIGHT SINGLE QUOTATION MARK
+\& ’ ‘ U+2019, U+2018 RIGHT/LEFT SINGLE QUOTATION MARK
+\& “ ” U+201C, U+201D LEFT/RIGHT DOUBLE QUOTATION MARK
+\& ” “ U+201D, U+201C RIGHT/LEFT DOUBLE QUOTATION MARK
+\& ‵ ′ U+2035, U+2032 REVERSED PRIME, PRIME
+\& ‶ ″ U+2036, U+2033 REVERSED DOUBLE PRIME, DOUBLE PRIME
+\& ‷ ‴ U+2037, U+2034 REVERSED TRIPLE PRIME, TRIPLE PRIME
+\& ‹ › U+2039, U+203A SINGLE LEFT/RIGHT\-POINTING ANGLE QUOTATION MARK
+\& › ‹ U+203A, U+2039 SINGLE RIGHT/LEFT\-POINTING ANGLE QUOTATION MARK
+\& ⁅ ⁆ U+2045, U+2046 LEFT/RIGHT SQUARE BRACKET WITH QUILL
+\& ⁍ ⁌ U+204D, U+204C BLACK RIGHT/LEFTWARDS BULLET
+\& ⁽ ⁾ U+207D, U+207E SUPERSCRIPT LEFT/RIGHT PARENTHESIS
+\& ₍ ₎ U+208D, U+208E SUBSCRIPT LEFT/RIGHT PARENTHESIS
+\& → ← U+2192, U+2190 RIGHT/LEFTWARDS ARROW
+\& ↛ ↚ U+219B, U+219A RIGHT/LEFTWARDS ARROW WITH STROKE
+\& ↝ ↜ U+219D, U+219C RIGHT/LEFTWARDS WAVE ARROW
+\& ↠ ↞ U+21A0, U+219E RIGHT/LEFTWARDS TWO HEADED ARROW
+\& ↣ ↢ U+21A3, U+21A2 RIGHT/LEFTWARDS ARROW WITH TAIL
+\& ↦ ↤ U+21A6, U+21A4 RIGHT/LEFTWARDS ARROW FROM BAR
+\& ↪ ↩ U+21AA, U+21A9 RIGHT/LEFTWARDS ARROW WITH HOOK
+\& ↬ ↫ U+21AC, U+21AB RIGHT/LEFTWARDS ARROW WITH LOOP
+\& ↱ ↰ U+21B1, U+21B0 UPWARDS ARROW WITH TIP RIGHT/LEFTWARDS
+\& ↳ ↲ U+21B3, U+21B2 DOWNWARDS ARROW WITH TIP RIGHT/LEFTWARDS
+\& ⇀ ↼ U+21C0, U+21BC RIGHT/LEFTWARDS HARPOON WITH BARB UPWARDS
+\& ⇁ ↽ U+21C1, U+21BD RIGHT/LEFTWARDS HARPOON WITH BARB DOWNWARDS
+\& ⇉ ⇇ U+21C9, U+21C7 RIGHT/LEFTWARDS PAIRED ARROWS
+\& ⇏ ⇍ U+21CF, U+21CD RIGHT/LEFTWARDS DOUBLE ARROW WITH STROKE
+\& ⇒ ⇐ U+21D2, U+21D0 RIGHT/LEFTWARDS DOUBLE ARROW
+\& ⇛ ⇚ U+21DB, U+21DA RIGHT/LEFTWARDS TRIPLE ARROW
+\& ⇝ ⇜ U+21DD, U+21DC RIGHT/LEFTWARDS SQUIGGLE ARROW
+\& ⇢ ⇠ U+21E2, U+21E0 RIGHT/LEFTWARDS DASHED ARROW
+\& ⇥ ⇤ U+21E5, U+21E4 RIGHT/LEFTWARDS ARROW TO BAR
+\& ⇨ ⇦ U+21E8, U+21E6 RIGHT/LEFTWARDS WHITE ARROW
+\& ⇴ ⬰ U+21F4, U+2B30 RIGHT/LEFT ARROW WITH SMALL CIRCLE
+\& ⇶ ⬱ U+21F6, U+2B31 THREE RIGHT/LEFTWARDS ARROWS
+\& ⇸ ⇷ U+21F8, U+21F7 RIGHT/LEFTWARDS ARROW WITH VERTICAL STROKE
+\& ⇻ ⇺ U+21FB, U+21FA RIGHT/LEFTWARDS ARROW WITH DOUBLE VERTICAL
+\& STROKE
+\& ⇾ ⇽ U+21FE, U+21FD RIGHT/LEFTWARDS OPEN\-HEADED ARROW
+\& ∈ ∋ U+2208, U+220B ELEMENT OF, CONTAINS AS MEMBER
+\& ∉ ∌ U+2209, U+220C NOT AN ELEMENT OF, DOES NOT CONTAIN AS MEMBER
+\& ∊ ∍ U+220A, U+220D SMALL ELEMENT OF, SMALL CONTAINS AS MEMBER
+\& ≤ ≥ U+2264, U+2265 LESS\-THAN/GREATER\-THAN OR EQUAL TO
+\& ≦ ≧ U+2266, U+2267 LESS\-THAN/GREATER\-THAN OVER EQUAL TO
+\& ≨ ≩ U+2268, U+2269 LESS\-THAN/GREATER\-THAN BUT NOT EQUAL TO
+\& ≪ ≫ U+226A, U+226B MUCH LESS\-THAN/GREATER\-THAN
+\& ≮ ≯ U+226E, U+226F NOT LESS\-THAN/GREATER\-THAN
+\& ≰ ≱ U+2270, U+2271 NEITHER LESS\-THAN/GREATER\-THAN NOR EQUAL TO
+\& ≲ ≳ U+2272, U+2273 LESS\-THAN/GREATER\-THAN OR EQUIVALENT TO
+\& ≴ ≵ U+2274, U+2275 NEITHER LESS\-THAN/GREATER\-THAN NOR EQUIVALENT TO
+\& ≺ ≻ U+227A, U+227B PRECEDES/SUCCEEDS
+\& ≼ ≽ U+227C, U+227D PRECEDES/SUCCEEDS OR EQUAL TO
+\& ≾ ≿ U+227E, U+227F PRECEDES/SUCCEEDS OR EQUIVALENT TO
+\& ⊀ ⊁ U+2280, U+2281 DOES NOT PRECEDE/SUCCEED
+\& ⊂ ⊃ U+2282, U+2283 SUBSET/SUPERSET OF
+\& ⊄ ⊅ U+2284, U+2285 NOT A SUBSET/SUPERSET OF
+\& ⊆ ⊇ U+2286, U+2287 SUBSET/SUPERSET OF OR EQUAL TO
+\& ⊈ ⊉ U+2288, U+2289 NEITHER A SUBSET/SUPERSET OF NOR EQUAL TO
+\& ⊊ ⊋ U+228A, U+228B SUBSET/SUPERSET OF WITH NOT EQUAL TO
+\& ⊣ ⊢ U+22A3, U+22A2 LEFT/RIGHT TACK
+\& ⊦ ⫞ U+22A6, U+2ADE ASSERTION, SHORT LEFT TACK
+\& ⊨ ⫤ U+22A8, U+2AE4 TRUE, VERTICAL BAR DOUBLE LEFT TURNSTILE
+\& ⊩ ⫣ U+22A9, U+2AE3 FORCES, DOUBLE VERTICAL BAR LEFT TURNSTILE
+\& ⊰ ⊱ U+22B0, U+22B1 PRECEDES/SUCCEEDS UNDER RELATION
+\& ⋐ ⋑ U+22D0, U+22D1 DOUBLE SUBSET/SUPERSET
+\& ⋖ ⋗ U+22D6, U+22D7 LESS\-THAN/GREATER\-THAN WITH DOT
+\& ⋘ ⋙ U+22D8, U+22D9 VERY MUCH LESS\-THAN/GREATER\-THAN
+\& ⋜ ⋝ U+22DC, U+22DD EQUAL TO OR LESS\-THAN/GREATER\-THAN
+\& ⋞ ⋟ U+22DE, U+22DF EQUAL TO OR PRECEDES/SUCCEEDS
+\& ⋠ ⋡ U+22E0, U+22E1 DOES NOT PRECEDE/SUCCEED OR EQUAL
+\& ⋦ ⋧ U+22E6, U+22E7 LESS\-THAN/GREATER\-THAN BUT NOT EQUIVALENT TO
+\& ⋨ ⋩ U+22E8, U+22E9 PRECEDES/SUCCEEDS BUT NOT EQUIVALENT TO
+\& ⋲ ⋺ U+22F2, U+22FA ELEMENT OF/CONTAINS WITH LONG HORIZONTAL STROKE
+\& ⋳ ⋻ U+22F3, U+22FB ELEMENT OF/CONTAINS WITH VERTICAL BAR AT END OF
+\& HORIZONTAL STROKE
+\& ⋴ ⋼ U+22F4, U+22FC SMALL ELEMENT OF/CONTAINS WITH VERTICAL BAR AT
+\& END OF HORIZONTAL STROKE
+\& ⋶ ⋽ U+22F6, U+22FD ELEMENT OF/CONTAINS WITH OVERBAR
+\& ⋷ ⋾ U+22F7, U+22FE SMALL ELEMENT OF/CONTAINS WITH OVERBAR
+\& ⌈ ⌉ U+2308, U+2309 LEFT/RIGHT CEILING
+\& ⌊ ⌋ U+230A, U+230B LEFT/RIGHT FLOOR
+\& ⌦ ⌫ U+2326, U+232B ERASE TO THE RIGHT/LEFT
+\& 〈 〉 U+2329, U+232A LEFT/RIGHT\-POINTING ANGLE BRACKET
+\& ⍈ ⍇ U+2348, U+2347 APL FUNCTIONAL SYMBOL QUAD RIGHT/LEFTWARDS ARROW
+\& ⏩ ⏪ U+23E9, U+23EA BLACK RIGHT/LEFT\-POINTING DOUBLE TRIANGLE
+\& ⏭ ⏮ U+23ED, U+23EE BLACK RIGHT/LEFT\-POINTING DOUBLE TRIANGLE WITH
+\& VERTICAL BAR
+\& ☛ ☚ U+261B, U+261A BLACK RIGHT/LEFT POINTING INDEX
+\& ☞ ☜ U+261E, U+261C WHITE RIGHT/LEFT POINTING INDEX
+\& ⚞ ⚟ U+269E, U+269F THREE LINES CONVERGING RIGHT/LEFT
+\& ❨ ❩ U+2768, U+2769 MEDIUM LEFT/RIGHT PARENTHESIS ORNAMENT
+\& ❪ ❫ U+276A, U+276B MEDIUM FLATTENED LEFT/RIGHT PARENTHESIS ORNAMENT
+\& ❬ ❭ U+276C, U+276D MEDIUM LEFT/RIGHT\-POINTING ANGLE BRACKET
+\& ORNAMENT
+\& ❮ ❯ U+276E, U+276F HEAVY LEFT/RIGHT\-POINTING ANGLE QUOTATION MARK
+\& ORNAMENT
+\& ❰ ❱ U+2770, U+2771 HEAVY LEFT/RIGHT\-POINTING ANGLE BRACKET ORNAMENT
+\& ❲ ❳ U+2772, U+2773 LIGHT LEFT/RIGHT TORTOISE SHELL BRACKET ORNAMENT
+\& ❴ ❵ U+2774, U+2775 MEDIUM LEFT/RIGHT CURLY BRACKET ORNAMENT
+\& ⟃ ⟄ U+27C3, U+27C4 OPEN SUBSET/SUPERSET
+\& ⟅ ⟆ U+27C5, U+27C6 LEFT/RIGHT S\-SHAPED BAG DELIMITER
+\& ⟈ ⟉ U+27C8, U+27C9 REVERSE SOLIDUS PRECEDING SUBSET, SUPERSET
+\& PRECEDING SOLIDUS
+\& ⟞ ⟝ U+27DE, U+27DD LONG LEFT/RIGHT TACK
+\& ⟦ ⟧ U+27E6, U+27E7 MATHEMATICAL LEFT/RIGHT WHITE SQUARE BRACKET
+\& ⟨ ⟩ U+27E8, U+27E9 MATHEMATICAL LEFT/RIGHT ANGLE BRACKET
+\& ⟪ ⟫ U+27EA, U+27EB MATHEMATICAL LEFT/RIGHT DOUBLE ANGLE BRACKET
+\& ⟬ ⟭ U+27EC, U+27ED MATHEMATICAL LEFT/RIGHT WHITE TORTOISE SHELL
+\& BRACKET
+\& ⟮ ⟯ U+27EE, U+27EF MATHEMATICAL LEFT/RIGHT FLATTENED PARENTHESIS
+\& ⟴ ⬲ U+27F4, U+2B32 RIGHT/LEFT ARROW WITH CIRCLED PLUS
+\& ⟶ ⟵ U+27F6, U+27F5 LONG RIGHT/LEFTWARDS ARROW
+\& ⟹ ⟸ U+27F9, U+27F8 LONG RIGHT/LEFTWARDS DOUBLE ARROW
+\& ⟼ ⟻ U+27FC, U+27FB LONG RIGHT/LEFTWARDS ARROW FROM BAR
+\& ⟾ ⟽ U+27FE, U+27FD LONG RIGHT/LEFTWARDS DOUBLE ARROW FROM BAR
+\& ⟿ ⬳ U+27FF, U+2B33 LONG RIGHT/LEFTWARDS SQUIGGLE ARROW
+\& ⤀ ⬴ U+2900, U+2B34 RIGHT/LEFTWARDS TWO\-HEADED ARROW WITH VERTICAL
+\& STROKE
+\& ⤁ ⬵ U+2901, U+2B35 RIGHT/LEFTWARDS TWO\-HEADED ARROW WITH DOUBLE
+\& VERTICAL STROKE
+\& ⤃ ⤂ U+2903, U+2902 RIGHT/LEFTWARDS DOUBLE ARROW WITH VERTICAL
+\& STROKE
+\& ⤅ ⬶ U+2905, U+2B36 RIGHT/LEFTWARDS TWO\-HEADED ARROW FROM BAR
+\& ⤇ ⤆ U+2907, U+2906 RIGHT/LEFTWARDS DOUBLE ARROW FROM BAR
+\& ⤍ ⤌ U+290D, U+290C RIGHT/LEFTWARDS DOUBLE DASH ARROW
+\& ⤏ ⤎ U+290F, U+290E RIGHT/LEFTWARDS TRIPLE DASH ARROW
+\& ⤐ ⬷ U+2910, U+2B37 RIGHT/LEFTWARDS TWO\-HEADED TRIPLE DASH ARROW
+\& ⤑ ⬸ U+2911, U+2B38 RIGHT/LEFTWARDS ARROW WITH DOTTED STEM
+\& ⤔ ⬹ U+2914, U+2B39 RIGHT/LEFTWARDS ARROW WITH TAIL WITH VERTICAL
+\& STROKE
+\& ⤕ ⬺ U+2915, U+2B3A RIGHT/LEFTWARDS ARROW WITH TAIL WITH DOUBLE
+\& VERTICAL STROKE
+\& ⤖ ⬻ U+2916, U+2B3B RIGHT/LEFTWARDS TWO\-HEADED ARROW WITH TAIL
+\& ⤗ ⬼ U+2917, U+2B3C RIGHT/LEFTWARDS TWO\-HEADED ARROW WITH TAIL WITH
+\& VERTICAL STROKE
+\& ⤘ ⬽ U+2918, U+2B3D RIGHT/LEFTWARDS TWO\-HEADED ARROW WITH TAIL WITH
+\& DOUBLE VERTICAL STROKE
+\& ⤚ ⤙ U+291A, U+2919 RIGHT/LEFTWARDS ARROW\-TAIL
+\& ⤜ ⤛ U+291C, U+291B RIGHT/LEFTWARDS DOUBLE ARROW\-TAIL
+\& ⤞ ⤝ U+291E, U+291D RIGHT/LEFTWARDS ARROW TO BLACK DIAMOND
+\& ⤠ ⤟ U+2920, U+291F RIGHT/LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
+\& ⤳ ⬿ U+2933, U+2B3F WAVE ARROW POINTING DIRECTLY RIGHT/LEFT
+\& ⤷ ⤶ U+2937, U+2936 ARROW POINTING DOWNWARDS THEN CURVING RIGHT/
+\& LEFTWARDS
+\& ⥅ ⥆ U+2945, U+2946 RIGHT/LEFTWARDS ARROW WITH PLUS BELOW
+\& ⥇ ⬾ U+2947, U+2B3E RIGHT/LEFTWARDS ARROW THROUGH X
+\& ⥓ ⥒ U+2953, U+2952 RIGHT/LEFTWARDS HARPOON WITH BARB UP TO BAR
+\& ⥗ ⥖ U+2957, U+2956 RIGHT/LEFTWARDS HARPOON WITH BARB DOWN TO BAR
+\& ⥛ ⥚ U+295B, U+295A RIGHT/LEFTWARDS HARPOON WITH BARB UP FROM BAR
+\& ⥟ ⥞ U+295F, U+295E RIGHT/LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
+\& ⥤ ⥢ U+2964, U+2962 RIGHT/LEFTWARDS HARPOON WITH BARB UP ABOVE
+\& RIGHT/LEFTWARDS HARPOON WITH BARB DOWN
+\& ⥬ ⥪ U+296C, U+296A RIGHT/LEFTWARDS HARPOON WITH BARB UP ABOVE LONG
+\& DASH
+\& ⥭ ⥫ U+296D, U+296B RIGHT/LEFTWARDS HARPOON WITH BARB DOWN BELOW
+\& LONG DASH
+\& ⥱ ⭀ U+2971, U+2B40 EQUALS SIGN ABOVE RIGHT/LEFTWARDS ARROW
+\& ⥲ ⭁ U+2972, U+2B41 TILDE OPERATOR ABOVE RIGHTWARDS ARROW, REVERSE
+\& TILDE OPERATOR ABOVE LEFTWARDS ARROW
+\& ⥴ ⭋ U+2974, U+2B4B RIGHTWARDS ARROW ABOVE TILDE OPERATOR,
+\& LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+\& ⥵ ⭂ U+2975, U+2B42 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO,
+\& LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+\& ⥹ ⥻ U+2979, U+297B SUBSET/SUPERSET ABOVE RIGHT/LEFTWARDS ARROW
+\& ⦃ ⦄ U+2983, U+2984 LEFT/RIGHT WHITE CURLY BRACKET
+\& ⦅ ⦆ U+2985, U+2986 LEFT/RIGHT WHITE PARENTHESIS
+\& ⦇ ⦈ U+2987, U+2988 Z NOTATION LEFT/RIGHT IMAGE BRACKET
+\& ⦉ ⦊ U+2989, U+298A Z NOTATION LEFT/RIGHT BINDING BRACKET
+\& ⦋ ⦌ U+298B, U+298C LEFT/RIGHT SQUARE BRACKET WITH UNDERBAR
+\& ⦍ ⦐ U+298D, U+2990 LEFT/RIGHT SQUARE BRACKET WITH TICK IN TOP
+\& CORNER
+\& ⦏ ⦎ U+298F, U+298E LEFT/RIGHT SQUARE BRACKET WITH TICK IN BOTTOM
+\& CORNER
+\& ⦑ ⦒ U+2991, U+2992 LEFT/RIGHT ANGLE BRACKET WITH DOT
+\& ⦓ ⦔ U+2993, U+2994 LEFT/RIGHT ARC LESS\-THAN/GREATER\-THAN BRACKET
+\& ⦕ ⦖ U+2995, U+2996 DOUBLE LEFT/RIGHT ARC GREATER\-THAN/LESS\-THAN
+\& BRACKET
+\& ⦗ ⦘ U+2997, U+2998 LEFT/RIGHT BLACK TORTOISE SHELL BRACKET
+\& ⦨ ⦩ U+29A8, U+29A9 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW
+\& POINTING UP AND RIGHT/LEFT
+\& ⦪ ⦫ U+29AA, U+29AB MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW
+\& POINTING DOWN AND RIGHT/LEFT
+\& ⦳ ⦴ U+29B3, U+29B4 EMPTY SET WITH RIGHT/LEFT ARROW ABOVE
+\& ⧀ ⧁ U+29C0, U+29C1 CIRCLED LESS\-THAN/GREATER\-THAN
+\& ⧘ ⧙ U+29D8, U+29D9 LEFT/RIGHT WIGGLY FENCE
+\& ⧚ ⧛ U+29DA, U+29DB LEFT/RIGHT DOUBLE WIGGLY FENCE
+\& ⧼ ⧽ U+29FC, U+29FD LEFT/RIGHT\-POINTING CURVED ANGLE BRACKET
+\& ⩹ ⩺ U+2A79, U+2A7A LESS\-THAN/GREATER\-THAN WITH CIRCLE INSIDE
+\& ⩻ ⩼ U+2A7B, U+2A7C LESS\-THAN/GREATER\-THAN WITH QUESTION MARK ABOVE
+\& ⩽ ⩾ U+2A7D, U+2A7E LESS\-THAN/GREATER\-THAN OR SLANTED EQUAL TO
+\& ⩿ ⪀ U+2A7F, U+2A80 LESS\-THAN/GREATER\-THAN OR SLANTED EQUAL TO WITH
+\& DOT INSIDE
+\& ⪁ ⪂ U+2A81, U+2A82 LESS\-THAN/GREATER\-THAN OR SLANTED EQUAL TO WITH
+\& DOT ABOVE
+\& ⪃ ⪄ U+2A83, U+2A84 LESS\-THAN/GREATER\-THAN OR SLANTED EQUAL TO WITH
+\& DOT ABOVE RIGHT/LEFT
+\& ⪅ ⪆ U+2A85, U+2A86 LESS\-THAN/GREATER\-THAN OR APPROXIMATE
+\& ⪇ ⪈ U+2A87, U+2A88 LESS\-THAN/GREATER\-THAN AND SINGLE\-LINE NOT
+\& EQUAL TO
+\& ⪉ ⪊ U+2A89, U+2A8A LESS\-THAN/GREATER\-THAN AND NOT APPROXIMATE
+\& ⪍ ⪎ U+2A8D, U+2A8E LESS\-THAN/GREATER\-THAN ABOVE SIMILAR OR EQUAL
+\& ⪕ ⪖ U+2A95, U+2A96 SLANTED EQUAL TO OR LESS\-THAN/GREATER\-THAN
+\& ⪗ ⪘ U+2A97, U+2A98 SLANTED EQUAL TO OR LESS\-THAN/GREATER\-THAN WITH
+\& DOT INSIDE
+\& ⪙ ⪚ U+2A99, U+2A9A DOUBLE\-LINE EQUAL TO OR LESS\-THAN/GREATER\-THAN
+\& ⪛ ⪜ U+2A9B, U+2A9C DOUBLE\-LINE SLANTED EQUAL TO OR LESS\-THAN/
+\& GREATER\-THAN
+\& ⪝ ⪞ U+2A9D, U+2A9E SIMILAR OR LESS\-THAN/GREATER\-THAN
+\& ⪟ ⪠ U+2A9F, U+2AA0 SIMILAR ABOVE LESS\-THAN/GREATER\-THAN ABOVE
+\& EQUALS SIGN
+\& ⪡ ⪢ U+2AA1, U+2AA2 DOUBLE NESTED LESS\-THAN/GREATER\-THAN
+\& ⪦ ⪧ U+2AA6, U+2AA7 LESS\-THAN/GREATER\-THAN CLOSED BY CURVE
+\& ⪨ ⪩ U+2AA8, U+2AA9 LESS\-THAN/GREATER\-THAN CLOSED BY CURVE ABOVE
+\& SLANTED EQUAL
+\& ⪪ ⪫ U+2AAA, U+2AAB SMALLER THAN/LARGER THAN
+\& ⪬ ⪭ U+2AAC, U+2AAD SMALLER THAN/LARGER THAN OR EQUAL TO
+\& ⪯ ⪰ U+2AAF, U+2AB0 PRECEDES/SUCCEEDS ABOVE SINGLE\-LINE EQUALS SIGN
+\& ⪱ ⪲ U+2AB1, U+2AB2 PRECEDES/SUCCEEDS ABOVE SINGLE\-LINE NOT EQUAL TO
+\& ⪳ ⪴ U+2AB3, U+2AB4 PRECEDES/SUCCEEDS ABOVE EQUALS SIGN
+\& ⪵ ⪶ U+2AB5, U+2AB6 PRECEDES/SUCCEEDS ABOVE NOT EQUAL TO
+\& ⪷ ⪸ U+2AB7, U+2AB8 PRECEDES/SUCCEEDS ABOVE ALMOST EQUAL TO
+\& ⪹ ⪺ U+2AB9, U+2ABA PRECEDES/SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+\& ⪻ ⪼ U+2ABB, U+2ABC DOUBLE PRECEDES/SUCCEEDS
+\& ⪽ ⪾ U+2ABD, U+2ABE SUBSET/SUPERSET WITH DOT
+\& ⪿ ⫀ U+2ABF, U+2AC0 SUBSET/SUPERSET WITH PLUS SIGN BELOW
+\& ⫁ ⫂ U+2AC1, U+2AC2 SUBSET/SUPERSET WITH MULTIPLICATION SIGN BELOW
+\& ⫃ ⫄ U+2AC3, U+2AC4 SUBSET/SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+\& ⫅ ⫆ U+2AC5, U+2AC6 SUBSET/SUPERSET OF ABOVE EQUALS SIGN
+\& ⫇ ⫈ U+2AC7, U+2AC8 SUBSET/SUPERSET OF ABOVE TILDE OPERATOR
+\& ⫉ ⫊ U+2AC9, U+2ACA SUBSET/SUPERSET OF ABOVE ALMOST EQUAL TO
+\& ⫋ ⫌ U+2ACB, U+2ACC SUBSET/SUPERSET OF ABOVE NOT EQUAL TO
+\& ⫏ ⫐ U+2ACF, U+2AD0 CLOSED SUBSET/SUPERSET
+\& ⫑ ⫒ U+2AD1, U+2AD2 CLOSED SUBSET/SUPERSET OR EQUAL TO
+\& ⫕ ⫖ U+2AD5, U+2AD6 SUBSET/SUPERSET ABOVE SUBSET/SUPERSET
+\& ⫥ ⊫ U+2AE5, U+22AB DOUBLE VERTICAL BAR DOUBLE LEFT/RIGHT TURNSTILE
+\& ⫷ ⫸ U+2AF7, U+2AF8 TRIPLE NESTED LESS\-THAN/GREATER\-THAN
+\& ⫹ ⫺ U+2AF9, U+2AFA DOUBLE\-LINE SLANTED LESS\-THAN/GREATER\-THAN OR
+\& EQUAL TO
+\& ⭆ ⭅ U+2B46, U+2B45 RIGHT/LEFTWARDS QUADRUPLE ARROW
+\& ⭇ ⭉ U+2B47, U+2B49 REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW,
+\& TILDE OPERATOR ABOVE LEFTWARDS ARROW
+\& ⭈ ⭊ U+2B48, U+2B4A RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL
+\& TO, LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
+\& ⭌ ⥳ U+2B4C, U+2973 RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR,
+\& LEFTWARDS ARROW ABOVE TILDE OPERATOR
+\& ⭢ ⭠ U+2B62, U+2B60 RIGHT/LEFTWARDS TRIANGLE\-HEADED ARROW
+\& ⭬ ⭪ U+2B6C, U+2B6A RIGHT/LEFTWARDS TRIANGLE\-HEADED DASHED ARROW
+\& ⭲ ⭰ U+2B72, U+2B70 RIGHT/LEFTWARDS TRIANGLE\-HEADED ARROW TO BAR
+\& ⭼ ⭺ U+2B7C, U+2B7A RIGHT/LEFTWARDS TRIANGLE\-HEADED ARROW WITH
+\& DOUBLE VERTICAL STROKE
+\& ⮆ ⮄ U+2B86, U+2B84 RIGHT/LEFTWARDS TRIANGLE\-HEADED PAIRED ARROWS
+\& ⮊ ⮈ U+2B8A, U+2B88 RIGHT/LEFTWARDS BLACK CIRCLED WHITE ARROW
+\& ⮕ ⬅ U+2B95, U+2B05 RIGHT/LEFTWARDS BLACK ARROW
+\& ⮚ ⮘ U+2B9A, U+2B98 THREE\-D TOP\-LIGHTED RIGHT/LEFTWARDS EQUILATERAL
+\& ARROWHEAD
+\& ⮞ ⮜ U+2B9E, U+2B9C BLACK RIGHT/LEFTWARDS EQUILATERAL ARROWHEAD
+\& ⮡ ⮠ U+2BA1, U+2BA0 DOWNWARDS TRIANGLE\-HEADED ARROW WITH LONG TIP
+\& RIGHT/LEFTWARDS
+\& ⮣ ⮢ U+2BA3, U+2BA2 UPWARDS TRIANGLE\-HEADED ARROW WITH LONG TIP
+\& RIGHT/LEFTWARDS
+\& ⮩ ⮨ U+2BA9, U+2BA8 BLACK CURVED DOWNWARDS AND RIGHT/LEFTWARDS ARROW
+\& ⮫ ⮪ U+2BAB, U+2BAA BLACK CURVED UPWARDS AND RIGHT/LEFTWARDS ARROW
+\& ⮱ ⮰ U+2BB1, U+2BB0 RIBBON ARROW DOWN RIGHT/LEFT
+\& ⮳ ⮲ U+2BB3, U+2BB2 RIBBON ARROW UP RIGHT/LEFT
+\& ⯮ ⯬ U+2BEE, U+2BEC RIGHT/LEFTWARDS TWO\-HEADED ARROW WITH TRIANGLE
+\& ARROWHEADS
+\& ⸂ ⸃ U+2E02, U+2E03 LEFT/RIGHT SUBSTITUTION BRACKET
+\& ⸃ ⸂ U+2E03, U+2E02 RIGHT/LEFT SUBSTITUTION BRACKET
+\& ⸄ ⸅ U+2E04, U+2E05 LEFT/RIGHT DOTTED SUBSTITUTION BRACKET
+\& ⸅ ⸄ U+2E05, U+2E04 RIGHT/LEFT DOTTED SUBSTITUTION BRACKET
+\& ⸉ ⸊ U+2E09, U+2E0A LEFT/RIGHT TRANSPOSITION BRACKET
+\& ⸊ ⸉ U+2E0A, U+2E09 RIGHT/LEFT TRANSPOSITION BRACKET
+\& ⸌ ⸍ U+2E0C, U+2E0D LEFT/RIGHT RAISED OMISSION BRACKET
+\& ⸍ ⸌ U+2E0D, U+2E0C RIGHT/LEFT RAISED OMISSION BRACKET
+\& ⸑ ⸐ U+2E11, U+2E10 REVERSED FORKED PARAGRAPHOS, FORKED PARAGRAPHOS
+\& ⸜ ⸝ U+2E1C, U+2E1D LEFT/RIGHT LOW PARAPHRASE BRACKET
+\& ⸝ ⸜ U+2E1D, U+2E1C RIGHT/LEFT LOW PARAPHRASE BRACKET
+\& ⸠ ⸡ U+2E20, U+2E21 LEFT/RIGHT VERTICAL BAR WITH QUILL
+\& ⸡ ⸠ U+2E21, U+2E20 RIGHT/LEFT VERTICAL BAR WITH QUILL
+\& ⸢ ⸣ U+2E22, U+2E23 TOP LEFT/RIGHT HALF BRACKET
+\& ⸤ ⸥ U+2E24, U+2E25 BOTTOM LEFT/RIGHT HALF BRACKET
+\& ⸦ ⸧ U+2E26, U+2E27 LEFT/RIGHT SIDEWAYS U BRACKET
+\& ⸨ ⸩ U+2E28, U+2E29 LEFT/RIGHT DOUBLE PARENTHESIS
+\& ⸶ ⸷ U+2E36, U+2E37 DAGGER WITH LEFT/RIGHT GUARD
+\& ⹂ „ U+2E42, U+201E DOUBLE LOW\-REVERSED\-9 QUOTATION MARK, DOUBLE
+\& LOW\-9 QUOTATION MARK
+\& ⹕ ⹖ U+2E55, U+2E56 LEFT/RIGHT SQUARE BRACKET WITH STROKE
+\& ⹗ ⹘ U+2E57, U+2E58 LEFT/RIGHT SQUARE BRACKET WITH DOUBLE STROKE
+\& ⹙ ⹚ U+2E59, U+2E5A TOP HALF LEFT/RIGHT PARENTHESIS
+\& ⹛ ⹜ U+2E5B, U+2E5C BOTTOM HALF LEFT/RIGHT PARENTHESIS
+\& 〈 〉 U+3008, U+3009 LEFT/RIGHT ANGLE BRACKET
+\& 《 》 U+300A, U+300B LEFT/RIGHT DOUBLE ANGLE BRACKET
+\& 「 」 U+300C, U+300D LEFT/RIGHT CORNER BRACKET
+\& 『 』 U+300E, U+300F LEFT/RIGHT WHITE CORNER BRACKET
+\& 【 】 U+3010, U+3011 LEFT/RIGHT BLACK LENTICULAR BRACKET
+\& 〔 〕 U+3014, U+3015 LEFT/RIGHT TORTOISE SHELL BRACKET
+\& 〖 〗 U+3016, U+3017 LEFT/RIGHT WHITE LENTICULAR BRACKET
+\& 〘 〙 U+3018, U+3019 LEFT/RIGHT WHITE TORTOISE SHELL BRACKET
+\& 〚 〛 U+301A, U+301B LEFT/RIGHT WHITE SQUARE BRACKET
+\& 〝 〞 U+301D, U+301E REVERSED DOUBLE PRIME QUOTATION MARK, DOUBLE
+\& PRIME QUOTATION MARK
+\& ꧁ ꧂ U+A9C1, U+A9C2 JAVANESE LEFT/RIGHT RERENGGAN
+\& ﴾ ﴿ U+FD3E, U+FD3F ORNATE LEFT/RIGHT PARENTHESIS
+\& ﹙ ﹚ U+FE59, U+FE5A SMALL LEFT/RIGHT PARENTHESIS
+\& ﹛ ﹜ U+FE5B, U+FE5C SMALL LEFT/RIGHT CURLY BRACKET
+\& ﹝ ﹞ U+FE5D, U+FE5E SMALL LEFT/RIGHT TORTOISE SHELL BRACKET
+\& ﹤ ﹥ U+FE64, U+FE65 SMALL LESS\-THAN/GREATER\-THAN SIGN
+\& ( ) U+FF08, U+FF09 FULLWIDTH LEFT/RIGHT PARENTHESIS
+\& < > U+FF1C, U+FF1E FULLWIDTH LESS\-THAN/GREATER\-THAN SIGN
+\& [ ] U+FF3B, U+FF3D FULLWIDTH LEFT/RIGHT SQUARE BRACKET
+\& { } U+FF5B, U+FF5D FULLWIDTH LEFT/RIGHT CURLY BRACKET
+\& ⦅ ⦆ U+FF5F, U+FF60 FULLWIDTH LEFT/RIGHT WHITE PARENTHESIS
+\& 「 」 U+FF62, U+FF63 HALFWIDTH LEFT/RIGHT CORNER BRACKET
+\& → ← U+FFEB, U+FFE9 HALFWIDTH RIGHT/LEFTWARDS ARROW
+\& 𝄃 𝄂 U+1D103, U+1D102 MUSICAL SYMBOL REVERSE FINAL BARLINE, MUSICAL
+\& SYMBOL FINAL BARLINE
+\& 𝄆 𝄇 U+1D106, U+1D107 MUSICAL SYMBOL LEFT/RIGHT REPEAT SIGN
+\& 👉 👈 U+1F449, U+1F448 WHITE RIGHT/LEFT POINTING BACKHAND INDEX
+\& 🔈 🕨 U+1F508, U+1F568 SPEAKER, RIGHT SPEAKER
+\& 🔉 🕩 U+1F509, U+1F569 SPEAKER WITH ONE SOUND WAVE, RIGHT SPEAKER WITH
+\& ONE SOUND WAVE
+\& 🔊 🕪 U+1F50A, U+1F56A SPEAKER WITH THREE SOUND WAVES, RIGHT SPEAKER
+\& WITH THREE SOUND WAVES
+\& 🕻 🕽 U+1F57B, U+1F57D LEFT/RIGHT HAND TELEPHONE RECEIVER
+\& 🖙 🖘 U+1F599, U+1F598 SIDEWAYS WHITE RIGHT/LEFT POINTING INDEX
+\& 🖛 🖚 U+1F59B, U+1F59A SIDEWAYS BLACK RIGHT/LEFT POINTING INDEX
+\& 🖝 🖜 U+1F59D, U+1F59C BLACK RIGHT/LEFT POINTING BACKHAND INDEX
+\& 🗦 🗧 U+1F5E6, U+1F5E7 THREE RAYS LEFT/RIGHT
+\& 🠂 🠀 U+1F802, U+1F800 RIGHT/LEFTWARDS ARROW WITH SMALL TRIANGLE
+\& ARROWHEAD
+\& 🠆 🠄 U+1F806, U+1F804 RIGHT/LEFTWARDS ARROW WITH MEDIUM TRIANGLE
+\& ARROWHEAD
+\& 🠊 🠈 U+1F80A, U+1F808 RIGHT/LEFTWARDS ARROW WITH LARGE TRIANGLE
+\& ARROWHEAD
+\& 🠒 🠐 U+1F812, U+1F810 RIGHT/LEFTWARDS ARROW WITH SMALL EQUILATERAL
+\& ARROWHEAD
+\& 🠖 🠔 U+1F816, U+1F814 RIGHT/LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD
+\& 🠚 🠘 U+1F81A, U+1F818 HEAVY RIGHT/LEFTWARDS ARROW WITH EQUILATERAL
+\& ARROWHEAD
+\& 🠞 🠜 U+1F81E, U+1F81C HEAVY RIGHT/LEFTWARDS ARROW WITH LARGE
+\& EQUILATERAL ARROWHEAD
+\& 🠢 🠠 U+1F822, U+1F820 RIGHT/LEFTWARDS TRIANGLE\-HEADED ARROW WITH
+\& NARROW SHAFT
+\& 🠦 🠤 U+1F826, U+1F824 RIGHT/LEFTWARDS TRIANGLE\-HEADED ARROW WITH
+\& MEDIUM SHAFT
+\& 🠪 🠨 U+1F82A, U+1F828 RIGHT/LEFTWARDS TRIANGLE\-HEADED ARROW WITH BOLD
+\& SHAFT
+\& 🠮 🠬 U+1F82E, U+1F82C RIGHT/LEFTWARDS TRIANGLE\-HEADED ARROW WITH
+\& HEAVY SHAFT
+\& 🠲 🠰 U+1F832, U+1F830 RIGHT/LEFTWARDS TRIANGLE\-HEADED ARROW WITH VERY
+\& HEAVY SHAFT
+\& 🠶 🠴 U+1F836, U+1F834 RIGHT/LEFTWARDS FINGER\-POST ARROW
+\& 🠺 🠸 U+1F83A, U+1F838 RIGHT/LEFTWARDS SQUARED ARROW
+\& 🠾 🠼 U+1F83E, U+1F83C RIGHT/LEFTWARDS COMPRESSED ARROW
+\& 🡂 🡀 U+1F842, U+1F840 RIGHT/LEFTWARDS HEAVY COMPRESSED ARROW
+\& 🡆 🡄 U+1F846, U+1F844 RIGHT/LEFTWARDS HEAVY ARROW
+\& 🡒 🡐 U+1F852, U+1F850 RIGHT/LEFTWARDS SANS\-SERIF ARROW
+\& 🡢 🡠 U+1F862, U+1F860 WIDE\-HEADED RIGHT/LEFTWARDS LIGHT BARB ARROW
+\& 🡪 🡨 U+1F86A, U+1F868 WIDE\-HEADED RIGHT/LEFTWARDS BARB ARROW
+\& 🡲 🡰 U+1F872, U+1F870 WIDE\-HEADED RIGHT/LEFTWARDS MEDIUM BARB ARROW
+\& 🡺 🡸 U+1F87A, U+1F878 WIDE\-HEADED RIGHT/LEFTWARDS HEAVY BARB ARROW
+\& 🢂 🢀 U+1F882, U+1F880 WIDE\-HEADED RIGHT/LEFTWARDS VERY HEAVY BARB
+\& ARROW
+\& 🢒 🢐 U+1F892, U+1F890 RIGHT/LEFTWARDS TRIANGLE ARROWHEAD
+\& 🢖 🢔 U+1F896, U+1F894 RIGHT/LEFTWARDS WHITE ARROW WITHIN TRIANGLE
+\& ARROWHEAD
+\& 🢚 🢘 U+1F89A, U+1F898 RIGHT/LEFTWARDS ARROW WITH NOTCHED TAIL
+\& 🢡 🢠 U+1F8A1, U+1F8A0 RIGHTWARDS BOTTOM SHADED WHITE ARROW,
+\& LEFTWARDS BOTTOM\-SHADED WHITE ARROW
+\& 🢣 🢢 U+1F8A3, U+1F8A2 RIGHT/LEFTWARDS TOP SHADED WHITE ARROW
+\& 🢥 🢦 U+1F8A5, U+1F8A6 RIGHT/LEFTWARDS RIGHT\-SHADED WHITE ARROW
+\& 🢧 🢤 U+1F8A7, U+1F8A4 RIGHT/LEFTWARDS LEFT\-SHADED WHITE ARROW
+\& 🢩 🢨 U+1F8A9, U+1F8A8 RIGHT/LEFTWARDS BACK\-TILTED SHADOWED WHITE ARROW
+\& 🢫 🢪 U+1F8AB, U+1F8AA RIGHT/LEFTWARDS FRONT\-TILTED SHADOWED WHITE
+\& ARROW
+.Ve
+.SS "The 'module_true' feature"
+.IX Subsection "The 'module_true' feature"
+This feature removes the need to return a true value at the end of a module
+loaded with \f(CW\*(C`require\*(C'\fR or \f(CW\*(C`use\*(C'\fR. Any errors during compilation will cause
+failures, but reaching the end of the module when this feature is in effect
+will prevent \f(CW\*(C`perl\*(C'\fR from throwing an exception that the module "did not return
+a true value".
+.SS "The 'class' feature"
+.IX Subsection "The 'class' feature"
+\&\fBWARNING\fR: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+.PP
+.Vb 1
+\& no warnings "experimental::class";
+.Ve
+.PP
+This feature enables the \f(CW\*(C`class\*(C'\fR block syntax and other associated keywords
+which implement the "new" object system, previously codenamed "Corinna".
+.SH "FEATURE BUNDLES"
+.IX Header "FEATURE BUNDLES"
+It's possible to load multiple features together, using
+a \fIfeature bundle\fR. The name of a feature bundle is prefixed with
+a colon, to distinguish it from an actual feature.
+.PP
+.Vb 1
+\& use feature ":5.10";
+.Ve
+.PP
+The following feature bundles are available:
+.PP
+.Vb 4
+\& bundle features included
+\& \-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
+\& :default indirect multidimensional
+\& bareword_filehandles
+\&
+\& :5.10 bareword_filehandles indirect
+\& multidimensional say state switch
+\&
+\& :5.12 bareword_filehandles indirect
+\& multidimensional say state switch
+\& unicode_strings
+\&
+\& :5.14 bareword_filehandles indirect
+\& multidimensional say state switch
+\& unicode_strings
+\&
+\& :5.16 bareword_filehandles current_sub evalbytes
+\& fc indirect multidimensional say state
+\& switch unicode_eval unicode_strings
+\&
+\& :5.18 bareword_filehandles current_sub evalbytes
+\& fc indirect multidimensional say state
+\& switch unicode_eval unicode_strings
+\&
+\& :5.20 bareword_filehandles current_sub evalbytes
+\& fc indirect multidimensional say state
+\& switch unicode_eval unicode_strings
+\&
+\& :5.22 bareword_filehandles current_sub evalbytes
+\& fc indirect multidimensional say state
+\& switch unicode_eval unicode_strings
+\&
+\& :5.24 bareword_filehandles current_sub evalbytes
+\& fc indirect multidimensional postderef_qq
+\& say state switch unicode_eval
+\& unicode_strings
+\&
+\& :5.26 bareword_filehandles current_sub evalbytes
+\& fc indirect multidimensional postderef_qq
+\& say state switch unicode_eval
+\& unicode_strings
+\&
+\& :5.28 bareword_filehandles bitwise current_sub
+\& evalbytes fc indirect multidimensional
+\& postderef_qq say state switch unicode_eval
+\& unicode_strings
+\&
+\& :5.30 bareword_filehandles bitwise current_sub
+\& evalbytes fc indirect multidimensional
+\& postderef_qq say state switch unicode_eval
+\& unicode_strings
+\&
+\& :5.32 bareword_filehandles bitwise current_sub
+\& evalbytes fc indirect multidimensional
+\& postderef_qq say state switch unicode_eval
+\& unicode_strings
+\&
+\& :5.34 bareword_filehandles bitwise current_sub
+\& evalbytes fc indirect multidimensional
+\& postderef_qq say state switch unicode_eval
+\& unicode_strings
+\&
+\& :5.36 bareword_filehandles bitwise current_sub
+\& evalbytes fc isa postderef_qq say signatures
+\& state unicode_eval unicode_strings
+\&
+\& :5.38 bitwise current_sub evalbytes fc isa
+\& module_true postderef_qq say signatures
+\& state unicode_eval unicode_strings
+.Ve
+.PP
+The \f(CW\*(C`:default\*(C'\fR bundle represents the feature set that is enabled before
+any \f(CW\*(C`use feature\*(C'\fR or \f(CW\*(C`no feature\*(C'\fR declaration.
+.PP
+Specifying sub-versions such as the \f(CW0\fR in \f(CW5.14.0\fR in feature bundles has
+no effect. Feature bundles are guaranteed to be the same for all sub-versions.
+.PP
+.Vb 2
+\& use feature ":5.14.0"; # same as ":5.14"
+\& use feature ":5.14.1"; # same as ":5.14"
+.Ve
+.SH "IMPLICIT LOADING"
+.IX Header "IMPLICIT LOADING"
+Instead of loading feature bundles by name, it is easier to let Perl do
+implicit loading of a feature bundle for you.
+.PP
+There are two ways to load the \f(CW\*(C`feature\*(C'\fR pragma implicitly:
+.IP \(bu 4
+By using the \f(CW\*(C`\-E\*(C'\fR switch on the Perl command-line instead of \f(CW\*(C`\-e\*(C'\fR.
+That will enable the feature bundle for that version of Perl in the
+main compilation unit (that is, the one-liner that follows \f(CW\*(C`\-E\*(C'\fR).
+.IP \(bu 4
+By explicitly requiring a minimum Perl version number for your program, with
+the \f(CW\*(C`use VERSION\*(C'\fR construct. That is,
+.Sp
+.Vb 1
+\& use v5.36.0;
+.Ve
+.Sp
+will do an implicit
+.Sp
+.Vb 2
+\& no feature \*(Aq:all\*(Aq;
+\& use feature \*(Aq:5.36\*(Aq;
+.Ve
+.Sp
+and so on. Note how the trailing sub-version
+is automatically stripped from the
+version.
+.Sp
+But to avoid portability warnings (see "use" in perlfunc), you may prefer:
+.Sp
+.Vb 1
+\& use 5.036;
+.Ve
+.Sp
+with the same effect.
+.Sp
+If the required version is older than Perl 5.10, the ":default" feature
+bundle is automatically loaded instead.
+.Sp
+Unlike \f(CW\*(C`use feature ":5.12"\*(C'\fR, saying \f(CW\*(C`use v5.12\*(C'\fR (or any higher version)
+also does the equivalent of \f(CW\*(C`use strict\*(C'\fR; see "use" in perlfunc for details.
+.SH "CHECKING FEATURES"
+.IX Header "CHECKING FEATURES"
+\&\f(CW\*(C`feature\*(C'\fR provides some simple APIs to check which features are enabled.
+.PP
+These functions cannot be imported and must be called by their fully
+qualified names. If you don't otherwise need to set a feature you will
+need to ensure \f(CW\*(C`feature\*(C'\fR is loaded with:
+.PP
+.Vb 1
+\& use feature ();
+.Ve
+.IP feature_enabled($feature) 4
+.IX Item "feature_enabled($feature)"
+.PD 0
+.ie n .IP "feature_enabled($feature, $depth)" 4
+.el .IP "feature_enabled($feature, \f(CW$depth\fR)" 4
+.IX Item "feature_enabled($feature, $depth)"
+.PD
+.Vb 6
+\& package MyStandardEnforcer;
+\& use feature ();
+\& use Carp "croak";
+\& sub import {
+\& croak "disable indirect!" if feature::feature_enabled("indirect");
+\& }
+.Ve
+.Sp
+Test whether a named feature is enabled at a given level in the call
+stack, returning a true value if it is. \f(CW$depth\fR defaults to 1,
+which checks the scope that called the scope calling
+\&\fBfeature::feature_enabled()\fR.
+.Sp
+croaks for an unknown feature name.
+.IP \fBfeatures_enabled()\fR 4
+.IX Item "features_enabled()"
+.PD 0
+.IP features_enabled($depth) 4
+.IX Item "features_enabled($depth)"
+.PD
+.Vb 5
+\& package ReportEnabledFeatures;
+\& use feature "say";
+\& sub import {
+\& say STDERR join " ", feature::features_enabled();
+\& }
+.Ve
+.Sp
+Returns a list of the features enabled at a given level in the call
+stack. \f(CW$depth\fR defaults to 1, which checks the scope that called
+the scope calling \fBfeature::features_enabled()\fR.
+.IP \fBfeature_bundle()\fR 4
+.IX Item "feature_bundle()"
+.PD 0
+.IP feature_bundle($depth) 4
+.IX Item "feature_bundle($depth)"
+.PD
+Returns the feature bundle, if any, selected at a given level in the
+call stack. \f(CW$depth\fR defaults to 1, which checks the scope that called
+the scope calling \fBfeature::feature_bundle()\fR.
+.Sp
+Returns an undefined value if no feature bundle is selected in the
+scope.
+.Sp
+The bundle name returned will be for the earliest bundle matching the
+selected bundle, so:
+.Sp
+.Vb 3
+\& use feature ();
+\& use v5.12;
+\& BEGIN { print feature::feature_bundle(0); }
+.Ve
+.Sp
+will print \f(CW5.11\fR.
+.Sp
+This returns internal state, at this point \f(CW\*(C`use v5.12;\*(C'\fR sets the
+feature bundle, but \f(CW\*(C` use feature ":5.12"; \*(C'\fR does not set the feature
+bundle. This may change in a future release of perl.