diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /upstream/mageia-cauldron/man3pm/feature.3pm | |
parent | Initial commit. (diff) | |
download | manpages-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.3pm | 1085 |
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. |