1 # -*- mode: Perl; buffer-read-only: t -*-
2 # !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
3 # This file is built by regen/feature.pl.
4 # Any changes made here will be lost!
14 class => 'feature_class',
15 defer => 'feature_defer',
16 state => 'feature_state',
17 switch => 'feature_switch',
18 bitwise => 'feature_bitwise',
19 indirect => 'feature_indirect',
20 evalbytes => 'feature_evalbytes',
21 signatures => 'feature_signatures',
22 current_sub => 'feature___SUB__',
23 module_true => 'feature_module_true',
24 refaliasing => 'feature_refaliasing',
25 postderef_qq => 'feature_postderef_qq',
26 unicode_eval => 'feature_unieval',
27 declared_refs => 'feature_myref',
28 unicode_strings => 'feature_unicode',
29 multidimensional => 'feature_multidimensional',
30 bareword_filehandles => 'feature_bareword_filehandles',
31 extra_paired_delimiters => 'feature_more_delims',
34 our %feature_bundle = (
35 "5.10" => [qw(bareword_filehandles indirect multidimensional say state switch)],
36 "5.11" => [qw(bareword_filehandles indirect multidimensional say state switch unicode_strings)],
37 "5.15" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional say state switch unicode_eval unicode_strings)],
38 "5.23" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
39 "5.27" => [qw(bareword_filehandles bitwise current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
40 "5.35" => [qw(bareword_filehandles bitwise current_sub evalbytes fc isa postderef_qq say signatures state unicode_eval unicode_strings)],
41 "5.37" => [qw(bitwise current_sub evalbytes fc isa module_true postderef_qq say signatures state unicode_eval unicode_strings)],
42 "all" => [qw(bareword_filehandles bitwise class current_sub declared_refs defer evalbytes extra_paired_delimiters fc indirect isa module_true multidimensional postderef_qq refaliasing say signatures state switch try unicode_eval unicode_strings)],
43 "default" => [qw(bareword_filehandles indirect multidimensional)],
46 $feature_bundle{"5.12"} = $feature_bundle{"5.11"};
47 $feature_bundle{"5.13"} = $feature_bundle{"5.11"};
48 $feature_bundle{"5.14"} = $feature_bundle{"5.11"};
49 $feature_bundle{"5.16"} = $feature_bundle{"5.15"};
50 $feature_bundle{"5.17"} = $feature_bundle{"5.15"};
51 $feature_bundle{"5.18"} = $feature_bundle{"5.15"};
52 $feature_bundle{"5.19"} = $feature_bundle{"5.15"};
53 $feature_bundle{"5.20"} = $feature_bundle{"5.15"};
54 $feature_bundle{"5.21"} = $feature_bundle{"5.15"};
55 $feature_bundle{"5.22"} = $feature_bundle{"5.15"};
56 $feature_bundle{"5.24"} = $feature_bundle{"5.23"};
57 $feature_bundle{"5.25"} = $feature_bundle{"5.23"};
58 $feature_bundle{"5.26"} = $feature_bundle{"5.23"};
59 $feature_bundle{"5.28"} = $feature_bundle{"5.27"};
60 $feature_bundle{"5.29"} = $feature_bundle{"5.27"};
61 $feature_bundle{"5.30"} = $feature_bundle{"5.27"};
62 $feature_bundle{"5.31"} = $feature_bundle{"5.27"};
63 $feature_bundle{"5.32"} = $feature_bundle{"5.27"};
64 $feature_bundle{"5.33"} = $feature_bundle{"5.27"};
65 $feature_bundle{"5.34"} = $feature_bundle{"5.27"};
66 $feature_bundle{"5.36"} = $feature_bundle{"5.35"};
67 $feature_bundle{"5.38"} = $feature_bundle{"5.37"};
68 $feature_bundle{"5.39"} = $feature_bundle{"5.37"};
69 $feature_bundle{"5.40"} = $feature_bundle{"5.37"};
70 $feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};
80 our $hint_mask = 0x3c000000;
81 our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 5.35 5.37 );
83 # This gets set (for now) in $^H as well as in %^H,
84 # for runtime speed of the uc/lc/ucfirst/lcfirst functions.
85 # See HINT_UNI_8_BIT in perl.h.
86 our $hint_uni8bit = 0x00000800;
89 # - think about versioned features (use feature switch => 2)
95 feature - Perl pragma to enable new features
99 use feature qw(fc say);
101 # Without the "use feature" above, this code would not be able to find
102 # the built-ins "say" or "fc":
103 say "The case-folded version of $x is: " . fc $x;
106 # set features to match the :5.36 bundle, which may turn off or on
107 # multiple features (see "FEATURE BUNDLES" below)
111 # implicitly loads :5.36 feature bundle
116 It is usually impossible to add new syntax to Perl without breaking
117 some existing programs. This pragma provides a way to minimize that
118 risk. New syntactic constructs, or new semantic meanings to older
119 constructs, can be enabled by C<use feature 'foo'>, and will be parsed
120 only when the appropriate feature pragma is in scope. (Nevertheless, the
121 C<CORE::> prefix provides access to all Perl keywords, regardless of this
124 =head2 Lexical effect
126 Like other pragmas (C<use strict>, for example), features have a lexical
127 effect. C<use feature qw(foo)> will only make the feature "foo" available
128 from that point to the end of the enclosing block.
132 say "say is available here";
134 print "But not here.\n";
138 Features can also be turned off by using C<no feature "foo">. This too
142 say "say is available here";
145 print "But not here.\n";
147 say "Yet it is here.";
149 C<no feature> with no features specified will reset to the default group. To
150 disable I<all> features (an unusual request!) use C<no feature ':all'>.
152 =head1 AVAILABLE FEATURES
154 Read L</"FEATURE BUNDLES"> for the feature cheat sheet summary.
156 =head2 The 'say' feature
158 C<use feature 'say'> tells the compiler to enable the Raku-inspired
161 See L<perlfunc/say> for details.
163 This feature is available starting with Perl 5.10.
165 =head2 The 'state' feature
167 C<use feature 'state'> tells the compiler to enable C<state>
170 See L<perlsub/"Persistent Private Variables"> for details.
172 This feature is available starting with Perl 5.10.
174 =head2 The 'switch' feature
176 B<WARNING>: This feature is still experimental and the implementation may
177 change or be removed in future versions of Perl. For this reason, Perl will
178 warn when you use the feature, unless you have explicitly disabled the warning:
180 no warnings "experimental::smartmatch";
182 C<use feature 'switch'> tells the compiler to enable the Raku
183 given/when construct.
185 See L<perlsyn/"Switch Statements"> for details.
187 This feature is available starting with Perl 5.10.
188 It is deprecated starting with Perl 5.38, and using
189 C<given>, C<when> or smartmatch will throw a warning.
190 It will be removed in Perl 5.42.
192 =head2 The 'unicode_strings' feature
194 C<use feature 'unicode_strings'> tells the compiler to use Unicode rules
195 in all string operations executed within its scope (unless they are also
196 within the scope of either C<use locale> or C<use bytes>). The same applies
197 to all regular expressions compiled within the scope, even if executed outside
198 it. It does not change the internal representation of strings, but only how
199 they are interpreted.
201 C<no feature 'unicode_strings'> tells the compiler to use the traditional
202 Perl rules wherein the native character set rules is used unless it is
203 clear to Perl that Unicode is desired. This can lead to some surprises
204 when the behavior suddenly changes. (See
205 L<perlunicode/The "Unicode Bug"> for details.) For this reason, if you are
206 potentially using Unicode in your program, the
207 C<use feature 'unicode_strings'> subpragma is B<strongly> recommended.
209 This feature is available starting with Perl 5.12; was almost fully
210 implemented in Perl 5.14; and extended in Perl 5.16 to cover C<quotemeta>;
211 was extended further in Perl 5.26 to cover L<the range
212 operator|perlop/Range Operators>; and was extended again in Perl 5.28 to
213 cover L<special-cased whitespace splitting|perlfunc/split>.
215 =head2 The 'unicode_eval' and 'evalbytes' features
217 Together, these two features are intended to replace the legacy string
218 C<eval> function, which behaves problematically in some instances. They are
219 available starting with Perl 5.16, and are enabled by default by a
220 S<C<use 5.16>> or higher declaration.
222 C<unicode_eval> changes the behavior of plain string C<eval> to work more
223 consistently, especially in the Unicode world. Certain (mis)behaviors
224 couldn't be changed without breaking some things that had come to rely on
225 them, so the feature can be enabled and disabled. Details are at
226 L<perlfunc/Under the "unicode_eval" feature>.
228 C<evalbytes> is like string C<eval>, but it treats its argument as a byte
229 string. Details are at L<perlfunc/evalbytes EXPR>. Without a
230 S<C<use feature 'evalbytes'>> nor a S<C<use v5.16>> (or higher) declaration in
231 the current scope, you can still access it by instead writing
234 =head2 The 'current_sub' feature
236 This provides the C<__SUB__> token that returns a reference to the current
237 subroutine or C<undef> outside of a subroutine.
239 This feature is available starting with Perl 5.16.
241 =head2 The 'array_base' feature
243 This feature supported the legacy C<$[> variable. See L<perlvar/$[>.
244 It was on by default but disabled under C<use v5.16> (see
245 L</IMPLICIT LOADING>, below) and unavailable since perl 5.30.
247 This feature is available under this name starting with Perl 5.16. In
248 previous versions, it was simply on all the time, and this pragma knew
251 =head2 The 'fc' feature
253 C<use feature 'fc'> tells the compiler to enable the C<fc> function,
254 which implements Unicode casefolding.
256 See L<perlfunc/fc> for details.
258 This feature is available from Perl 5.16 onwards.
260 =head2 The 'lexical_subs' feature
262 In Perl versions prior to 5.26, this feature enabled
263 declaration of subroutines via C<my sub foo>, C<state sub foo>
264 and C<our sub foo> syntax. See L<perlsub/Lexical Subroutines> for details.
266 This feature is available from Perl 5.18 onwards. From Perl 5.18 to 5.24,
267 it was classed as experimental, and Perl emitted a warning for its
268 usage, except when explicitly disabled:
270 no warnings "experimental::lexical_subs";
272 As of Perl 5.26, use of this feature no longer triggers a warning, though
273 the C<experimental::lexical_subs> warning category still exists (for
274 compatibility with code that disables it). In addition, this syntax is
275 not only no longer experimental, but it is enabled for all Perl code,
276 regardless of what feature declarations are in scope.
278 =head2 The 'postderef' and 'postderef_qq' features
280 The 'postderef_qq' feature extends the applicability of L<postfix
281 dereference syntax|perlref/Postfix Dereference Syntax> so that
282 postfix array dereference, postfix scalar dereference, and
283 postfix array highest index access are available in double-quotish interpolations.
284 For example, it makes the following two statements equivalent:
286 my $s = "[@{ $h->{a} }]";
287 my $s = "[$h->{a}->@*]";
289 This feature is available from Perl 5.20 onwards. In Perl 5.20 and 5.22, it
290 was classed as experimental, and Perl emitted a warning for its
291 usage, except when explicitly disabled:
293 no warnings "experimental::postderef";
295 As of Perl 5.24, use of this feature no longer triggers a warning, though
296 the C<experimental::postderef> warning category still exists (for
297 compatibility with code that disables it).
299 The 'postderef' feature was used in Perl 5.20 and Perl 5.22 to enable
300 postfix dereference syntax outside double-quotish interpolations. In those
301 versions, using it triggered the C<experimental::postderef> warning in the
302 same way as the 'postderef_qq' feature did. As of Perl 5.24, this syntax is
303 not only no longer experimental, but it is enabled for all Perl code,
304 regardless of what feature declarations are in scope.
306 =head2 The 'signatures' feature
308 This enables syntax for declaring subroutine arguments as lexical variables.
309 For example, for this subroutine:
311 sub foo ($left, $right) {
312 return $left + $right;
315 Calling C<foo(3, 7)> will assign C<3> into C<$left> and C<7> into C<$right>.
317 See L<perlsub/Signatures> for details.
319 This feature is available from Perl 5.20 onwards. From Perl 5.20 to 5.34,
320 it was classed as experimental, and Perl emitted a warning for its usage,
321 except when explicitly disabled:
323 no warnings "experimental::signatures";
325 As of Perl 5.36, use of this feature no longer triggers a warning, though the
326 C<experimental::signatures> warning category still exists (for compatibility
327 with code that disables it). This feature is now considered stable, and is
328 enabled automatically by C<use v5.36> (or higher).
330 =head2 The 'refaliasing' feature
332 B<WARNING>: This feature is still experimental and the implementation may
333 change or be removed in future versions of Perl. For this reason, Perl will
334 warn when you use the feature, unless you have explicitly disabled the warning:
336 no warnings "experimental::refaliasing";
338 This enables aliasing via assignment to references:
340 \$a = \$b; # $a and $b now point to the same scalar
341 \@a = \@b; # to the same array
344 foreach \%hash (@array_of_hash_refs) {
348 See L<perlref/Assigning to References> for details.
350 This feature is available from Perl 5.22 onwards.
352 =head2 The 'bitwise' feature
354 This makes the four standard bitwise operators (C<& | ^ ~>) treat their
355 operands consistently as numbers, and introduces four new dotted operators
356 (C<&. |. ^. ~.>) that treat their operands consistently as strings. The
357 same applies to the assignment variants (C<&= |= ^= &.= |.= ^.=>).
359 See L<perlop/Bitwise String Operators> for details.
361 This feature is available from Perl 5.22 onwards. Starting in Perl 5.28,
362 C<use v5.28> will enable the feature. Before 5.28, it was still
363 experimental and would emit a warning in the "experimental::bitwise"
366 =head2 The 'declared_refs' feature
368 B<WARNING>: This feature is still experimental and the implementation may
369 change or be removed in future versions of Perl. For this reason, Perl will
370 warn when you use the feature, unless you have explicitly disabled the warning:
372 no warnings "experimental::declared_refs";
374 This allows a reference to a variable to be declared with C<my>, C<state>,
375 or C<our>, or localized with C<local>. It is intended mainly for use in
376 conjunction with the "refaliasing" feature. See L<perlref/Declaring a
377 Reference to a Variable> for examples.
379 This feature is available from Perl 5.26 onwards.
381 =head2 The 'isa' feature
383 This allows the use of the C<isa> infix operator, which tests whether the
384 scalar given by the left operand is an object of the class given by the
385 right operand. See L<perlop/Class Instance Operator> for more details.
387 This feature is available from Perl 5.32 onwards. From Perl 5.32 to 5.34,
388 it was classed as experimental, and Perl emitted a warning for its usage,
389 except when explicitly disabled:
391 no warnings "experimental::isa";
393 As of Perl 5.36, use of this feature no longer triggers a warning (though the
394 C<experimental::isa> warning category stilll exists for compatibility with
395 code that disables it). This feature is now considered stable, and is enabled
396 automatically by C<use v5.36> (or higher).
398 =head2 The 'indirect' feature
400 This feature allows the use of L<indirect object
401 syntax|perlobj/Indirect Object Syntax> for method calls, e.g. C<new
402 Foo 1, 2;>. It is enabled by default, but can be turned off to
403 disallow indirect object syntax.
405 This feature is available under this name from Perl 5.32 onwards. In
406 previous versions, it was simply on all the time. To disallow (or
407 warn on) indirect object syntax on older Perls, see the L<indirect>
410 =head2 The 'multidimensional' feature
412 This feature enables multidimensional array emulation, a perl 4 (or
413 earlier) feature that was used to emulate multidimensional arrays with
414 hashes. This works by converting code like C<< $foo{$x, $y} >> into
415 C<< $foo{join($;, $x, $y)} >>. It is enabled by default, but can be
416 turned off to disable multidimensional array emulation.
418 When this feature is disabled the syntax that is normally replaced
419 will report a compilation error.
421 This feature is available under this name from Perl 5.34 onwards. In
422 previous versions, it was simply on all the time.
424 You can use the L<multidimensional> module on CPAN to disable
425 multidimensional array emulation for older versions of Perl.
427 =head2 The 'bareword_filehandles' feature
429 This feature enables bareword filehandles for builtin functions
430 operations, a generally discouraged practice. It is enabled by
431 default, but can be turned off to disable bareword filehandles, except
432 for the exceptions listed below.
434 The perl built-in filehandles C<STDIN>, C<STDOUT>, C<STDERR>, C<DATA>,
435 C<ARGV>, C<ARGVOUT> and the special C<_> are always enabled.
437 This feature is available under this name from Perl 5.34 onwards. In
438 previous versions it was simply on all the time.
440 You can use the L<bareword::filehandles> module on CPAN to disable
441 bareword filehandles for older versions of perl.
443 =head2 The 'try' feature
445 B<WARNING>: This feature is still experimental and the implementation may
446 change or be removed in future versions of Perl. For this reason, Perl will
447 warn when you use the feature, unless you have explicitly disabled the warning:
449 no warnings "experimental::try";
451 This feature enables the C<try> and C<catch> syntax, which allows exception
452 handling, where exceptions thrown from the body of the block introduced with
453 C<try> are caught by executing the body of the C<catch> block.
455 This feature is available starting in Perl 5.34.
457 For more information, see L<perlsyn/"Try Catch Exception Handling">.
459 =head2 The 'defer' feature
461 B<WARNING>: This feature is still experimental and the implementation may
462 change or be removed in future versions of Perl. For this reason, Perl will
463 warn when you use the feature, unless you have explicitly disabled the warning:
465 no warnings "experimental::defer";
467 This feature enables the C<defer> block syntax, which allows a block of code
468 to be deferred until when the flow of control leaves the block which contained
469 it. For more details, see L<perlsyn/defer>.
471 This feature is available starting in Perl 5.36.
473 =head2 The 'extra_paired_delimiters' feature
475 B<WARNING>: This feature is still experimental and the implementation may
476 change or be removed in future versions of Perl. For this reason, Perl will
477 warn when you use the feature, unless you have explicitly disabled the warning:
479 no warnings "experimental::extra_paired_delimiters";
481 This feature enables the use of more paired string delimiters than the
482 traditional four, S<C<< < > >>>, S<C<( )>>, S<C<{ }>>, and S<C<[ ]>>. When
483 this feature is on, for example, you can say S<C<qrE<171>patE<187>>>.
485 As with any usage of non-ASCII delimiters in a UTF-8-encoded source file, you
486 will want to ensure the parser will decode the source code from UTF-8 bytes
487 with a declaration such as C<use utf8>.
489 This feature is available starting in Perl 5.36.
491 The complete list of accepted paired delimiters as of Unicode 14.0 is:
493 ( ) U+0028, U+0029 LEFT/RIGHT PARENTHESIS
494 < > U+003C, U+003E LESS-THAN/GREATER-THAN SIGN
495 [ ] U+005B, U+005D LEFT/RIGHT SQUARE BRACKET
496 { } U+007B, U+007D LEFT/RIGHT CURLY BRACKET
497 « » U+00AB, U+00BB LEFT/RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
498 » « U+00BB, U+00AB RIGHT/LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
499 ܆ ܇ U+0706, U+0707 SYRIAC COLON SKEWED LEFT/RIGHT
500 ༺ ༻ U+0F3A, U+0F3B TIBETAN MARK GUG RTAGS GYON, TIBETAN MARK GUG
502 ༼ ༽ U+0F3C, U+0F3D TIBETAN MARK ANG KHANG GYON, TIBETAN MARK ANG
504 ᚛ ᚜ U+169B, U+169C OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK
505 ‘ ’ U+2018, U+2019 LEFT/RIGHT SINGLE QUOTATION MARK
506 ’ ‘ U+2019, U+2018 RIGHT/LEFT SINGLE QUOTATION MARK
507 “ ” U+201C, U+201D LEFT/RIGHT DOUBLE QUOTATION MARK
508 ” “ U+201D, U+201C RIGHT/LEFT DOUBLE QUOTATION MARK
509 ‵ ′ U+2035, U+2032 REVERSED PRIME, PRIME
510 ‶ ″ U+2036, U+2033 REVERSED DOUBLE PRIME, DOUBLE PRIME
511 ‷ ‴ U+2037, U+2034 REVERSED TRIPLE PRIME, TRIPLE PRIME
512 ‹ › U+2039, U+203A SINGLE LEFT/RIGHT-POINTING ANGLE QUOTATION MARK
513 › ‹ U+203A, U+2039 SINGLE RIGHT/LEFT-POINTING ANGLE QUOTATION MARK
514 ⁅ ⁆ U+2045, U+2046 LEFT/RIGHT SQUARE BRACKET WITH QUILL
515 ⁍ ⁌ U+204D, U+204C BLACK RIGHT/LEFTWARDS BULLET
516 ⁽ ⁾ U+207D, U+207E SUPERSCRIPT LEFT/RIGHT PARENTHESIS
517 ₍ ₎ U+208D, U+208E SUBSCRIPT LEFT/RIGHT PARENTHESIS
518 → ← U+2192, U+2190 RIGHT/LEFTWARDS ARROW
519 ↛ ↚ U+219B, U+219A RIGHT/LEFTWARDS ARROW WITH STROKE
520 ↝ ↜ U+219D, U+219C RIGHT/LEFTWARDS WAVE ARROW
521 ↠ ↞ U+21A0, U+219E RIGHT/LEFTWARDS TWO HEADED ARROW
522 ↣ ↢ U+21A3, U+21A2 RIGHT/LEFTWARDS ARROW WITH TAIL
523 ↦ ↤ U+21A6, U+21A4 RIGHT/LEFTWARDS ARROW FROM BAR
524 ↪ ↩ U+21AA, U+21A9 RIGHT/LEFTWARDS ARROW WITH HOOK
525 ↬ ↫ U+21AC, U+21AB RIGHT/LEFTWARDS ARROW WITH LOOP
526 ↱ ↰ U+21B1, U+21B0 UPWARDS ARROW WITH TIP RIGHT/LEFTWARDS
527 ↳ ↲ U+21B3, U+21B2 DOWNWARDS ARROW WITH TIP RIGHT/LEFTWARDS
528 ⇀ ↼ U+21C0, U+21BC RIGHT/LEFTWARDS HARPOON WITH BARB UPWARDS
529 ⇁ ↽ U+21C1, U+21BD RIGHT/LEFTWARDS HARPOON WITH BARB DOWNWARDS
530 ⇉ ⇇ U+21C9, U+21C7 RIGHT/LEFTWARDS PAIRED ARROWS
531 ⇏ ⇍ U+21CF, U+21CD RIGHT/LEFTWARDS DOUBLE ARROW WITH STROKE
532 ⇒ ⇐ U+21D2, U+21D0 RIGHT/LEFTWARDS DOUBLE ARROW
533 ⇛ ⇚ U+21DB, U+21DA RIGHT/LEFTWARDS TRIPLE ARROW
534 ⇝ ⇜ U+21DD, U+21DC RIGHT/LEFTWARDS SQUIGGLE ARROW
535 ⇢ ⇠ U+21E2, U+21E0 RIGHT/LEFTWARDS DASHED ARROW
536 ⇥ ⇤ U+21E5, U+21E4 RIGHT/LEFTWARDS ARROW TO BAR
537 ⇨ ⇦ U+21E8, U+21E6 RIGHT/LEFTWARDS WHITE ARROW
538 ⇴ ⬰ U+21F4, U+2B30 RIGHT/LEFT ARROW WITH SMALL CIRCLE
539 ⇶ ⬱ U+21F6, U+2B31 THREE RIGHT/LEFTWARDS ARROWS
540 ⇸ ⇷ U+21F8, U+21F7 RIGHT/LEFTWARDS ARROW WITH VERTICAL STROKE
541 ⇻ ⇺ U+21FB, U+21FA RIGHT/LEFTWARDS ARROW WITH DOUBLE VERTICAL
543 ⇾ ⇽ U+21FE, U+21FD RIGHT/LEFTWARDS OPEN-HEADED ARROW
544 ∈ ∋ U+2208, U+220B ELEMENT OF, CONTAINS AS MEMBER
545 ∉ ∌ U+2209, U+220C NOT AN ELEMENT OF, DOES NOT CONTAIN AS MEMBER
546 ∊ ∍ U+220A, U+220D SMALL ELEMENT OF, SMALL CONTAINS AS MEMBER
547 ≤ ≥ U+2264, U+2265 LESS-THAN/GREATER-THAN OR EQUAL TO
548 ≦ ≧ U+2266, U+2267 LESS-THAN/GREATER-THAN OVER EQUAL TO
549 ≨ ≩ U+2268, U+2269 LESS-THAN/GREATER-THAN BUT NOT EQUAL TO
550 ≪ ≫ U+226A, U+226B MUCH LESS-THAN/GREATER-THAN
551 ≮ ≯ U+226E, U+226F NOT LESS-THAN/GREATER-THAN
552 ≰ ≱ U+2270, U+2271 NEITHER LESS-THAN/GREATER-THAN NOR EQUAL TO
553 ≲ ≳ U+2272, U+2273 LESS-THAN/GREATER-THAN OR EQUIVALENT TO
554 ≴ ≵ U+2274, U+2275 NEITHER LESS-THAN/GREATER-THAN NOR EQUIVALENT TO
555 ≺ ≻ U+227A, U+227B PRECEDES/SUCCEEDS
556 ≼ ≽ U+227C, U+227D PRECEDES/SUCCEEDS OR EQUAL TO
557 ≾ ≿ U+227E, U+227F PRECEDES/SUCCEEDS OR EQUIVALENT TO
558 ⊀ ⊁ U+2280, U+2281 DOES NOT PRECEDE/SUCCEED
559 ⊂ ⊃ U+2282, U+2283 SUBSET/SUPERSET OF
560 ⊄ ⊅ U+2284, U+2285 NOT A SUBSET/SUPERSET OF
561 ⊆ ⊇ U+2286, U+2287 SUBSET/SUPERSET OF OR EQUAL TO
562 ⊈ ⊉ U+2288, U+2289 NEITHER A SUBSET/SUPERSET OF NOR EQUAL TO
563 ⊊ ⊋ U+228A, U+228B SUBSET/SUPERSET OF WITH NOT EQUAL TO
564 ⊣ ⊢ U+22A3, U+22A2 LEFT/RIGHT TACK
565 ⊦ ⫞ U+22A6, U+2ADE ASSERTION, SHORT LEFT TACK
566 ⊨ ⫤ U+22A8, U+2AE4 TRUE, VERTICAL BAR DOUBLE LEFT TURNSTILE
567 ⊩ ⫣ U+22A9, U+2AE3 FORCES, DOUBLE VERTICAL BAR LEFT TURNSTILE
568 ⊰ ⊱ U+22B0, U+22B1 PRECEDES/SUCCEEDS UNDER RELATION
569 ⋐ ⋑ U+22D0, U+22D1 DOUBLE SUBSET/SUPERSET
570 ⋖ ⋗ U+22D6, U+22D7 LESS-THAN/GREATER-THAN WITH DOT
571 ⋘ ⋙ U+22D8, U+22D9 VERY MUCH LESS-THAN/GREATER-THAN
572 ⋜ ⋝ U+22DC, U+22DD EQUAL TO OR LESS-THAN/GREATER-THAN
573 ⋞ ⋟ U+22DE, U+22DF EQUAL TO OR PRECEDES/SUCCEEDS
574 ⋠ ⋡ U+22E0, U+22E1 DOES NOT PRECEDE/SUCCEED OR EQUAL
575 ⋦ ⋧ U+22E6, U+22E7 LESS-THAN/GREATER-THAN BUT NOT EQUIVALENT TO
576 ⋨ ⋩ U+22E8, U+22E9 PRECEDES/SUCCEEDS BUT NOT EQUIVALENT TO
577 ⋲ ⋺ U+22F2, U+22FA ELEMENT OF/CONTAINS WITH LONG HORIZONTAL STROKE
578 ⋳ ⋻ U+22F3, U+22FB ELEMENT OF/CONTAINS WITH VERTICAL BAR AT END OF
580 ⋴ ⋼ U+22F4, U+22FC SMALL ELEMENT OF/CONTAINS WITH VERTICAL BAR AT
581 END OF HORIZONTAL STROKE
582 ⋶ ⋽ U+22F6, U+22FD ELEMENT OF/CONTAINS WITH OVERBAR
583 ⋷ ⋾ U+22F7, U+22FE SMALL ELEMENT OF/CONTAINS WITH OVERBAR
584 ⌈ ⌉ U+2308, U+2309 LEFT/RIGHT CEILING
585 ⌊ ⌋ U+230A, U+230B LEFT/RIGHT FLOOR
586 ⌦ ⌫ U+2326, U+232B ERASE TO THE RIGHT/LEFT
587 〈 〉 U+2329, U+232A LEFT/RIGHT-POINTING ANGLE BRACKET
588 ⍈ ⍇ U+2348, U+2347 APL FUNCTIONAL SYMBOL QUAD RIGHT/LEFTWARDS ARROW
589 ⏩ ⏪ U+23E9, U+23EA BLACK RIGHT/LEFT-POINTING DOUBLE TRIANGLE
590 ⏭ ⏮ U+23ED, U+23EE BLACK RIGHT/LEFT-POINTING DOUBLE TRIANGLE WITH
592 ☛ ☚ U+261B, U+261A BLACK RIGHT/LEFT POINTING INDEX
593 ☞ ☜ U+261E, U+261C WHITE RIGHT/LEFT POINTING INDEX
594 ⚞ ⚟ U+269E, U+269F THREE LINES CONVERGING RIGHT/LEFT
595 ❨ ❩ U+2768, U+2769 MEDIUM LEFT/RIGHT PARENTHESIS ORNAMENT
596 ❪ ❫ U+276A, U+276B MEDIUM FLATTENED LEFT/RIGHT PARENTHESIS ORNAMENT
597 ❬ ❭ U+276C, U+276D MEDIUM LEFT/RIGHT-POINTING ANGLE BRACKET
599 ❮ ❯ U+276E, U+276F HEAVY LEFT/RIGHT-POINTING ANGLE QUOTATION MARK
601 ❰ ❱ U+2770, U+2771 HEAVY LEFT/RIGHT-POINTING ANGLE BRACKET ORNAMENT
602 ❲ ❳ U+2772, U+2773 LIGHT LEFT/RIGHT TORTOISE SHELL BRACKET ORNAMENT
603 ❴ ❵ U+2774, U+2775 MEDIUM LEFT/RIGHT CURLY BRACKET ORNAMENT
604 ⟃ ⟄ U+27C3, U+27C4 OPEN SUBSET/SUPERSET
605 ⟅ ⟆ U+27C5, U+27C6 LEFT/RIGHT S-SHAPED BAG DELIMITER
606 ⟈ ⟉ U+27C8, U+27C9 REVERSE SOLIDUS PRECEDING SUBSET, SUPERSET
608 ⟞ ⟝ U+27DE, U+27DD LONG LEFT/RIGHT TACK
609 ⟦ ⟧ U+27E6, U+27E7 MATHEMATICAL LEFT/RIGHT WHITE SQUARE BRACKET
610 ⟨ ⟩ U+27E8, U+27E9 MATHEMATICAL LEFT/RIGHT ANGLE BRACKET
611 ⟪ ⟫ U+27EA, U+27EB MATHEMATICAL LEFT/RIGHT DOUBLE ANGLE BRACKET
612 ⟬ ⟭ U+27EC, U+27ED MATHEMATICAL LEFT/RIGHT WHITE TORTOISE SHELL
614 ⟮ ⟯ U+27EE, U+27EF MATHEMATICAL LEFT/RIGHT FLATTENED PARENTHESIS
615 ⟴ ⬲ U+27F4, U+2B32 RIGHT/LEFT ARROW WITH CIRCLED PLUS
616 ⟶ ⟵ U+27F6, U+27F5 LONG RIGHT/LEFTWARDS ARROW
617 ⟹ ⟸ U+27F9, U+27F8 LONG RIGHT/LEFTWARDS DOUBLE ARROW
618 ⟼ ⟻ U+27FC, U+27FB LONG RIGHT/LEFTWARDS ARROW FROM BAR
619 ⟾ ⟽ U+27FE, U+27FD LONG RIGHT/LEFTWARDS DOUBLE ARROW FROM BAR
620 ⟿ ⬳ U+27FF, U+2B33 LONG RIGHT/LEFTWARDS SQUIGGLE ARROW
621 ⤀ ⬴ U+2900, U+2B34 RIGHT/LEFTWARDS TWO-HEADED ARROW WITH VERTICAL
623 ⤁ ⬵ U+2901, U+2B35 RIGHT/LEFTWARDS TWO-HEADED ARROW WITH DOUBLE
625 ⤃ ⤂ U+2903, U+2902 RIGHT/LEFTWARDS DOUBLE ARROW WITH VERTICAL
627 ⤅ ⬶ U+2905, U+2B36 RIGHT/LEFTWARDS TWO-HEADED ARROW FROM BAR
628 ⤇ ⤆ U+2907, U+2906 RIGHT/LEFTWARDS DOUBLE ARROW FROM BAR
629 ⤍ ⤌ U+290D, U+290C RIGHT/LEFTWARDS DOUBLE DASH ARROW
630 ⤏ ⤎ U+290F, U+290E RIGHT/LEFTWARDS TRIPLE DASH ARROW
631 ⤐ ⬷ U+2910, U+2B37 RIGHT/LEFTWARDS TWO-HEADED TRIPLE DASH ARROW
632 ⤑ ⬸ U+2911, U+2B38 RIGHT/LEFTWARDS ARROW WITH DOTTED STEM
633 ⤔ ⬹ U+2914, U+2B39 RIGHT/LEFTWARDS ARROW WITH TAIL WITH VERTICAL
635 ⤕ ⬺ U+2915, U+2B3A RIGHT/LEFTWARDS ARROW WITH TAIL WITH DOUBLE
637 ⤖ ⬻ U+2916, U+2B3B RIGHT/LEFTWARDS TWO-HEADED ARROW WITH TAIL
638 ⤗ ⬼ U+2917, U+2B3C RIGHT/LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH
640 ⤘ ⬽ U+2918, U+2B3D RIGHT/LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH
641 DOUBLE VERTICAL STROKE
642 ⤚ ⤙ U+291A, U+2919 RIGHT/LEFTWARDS ARROW-TAIL
643 ⤜ ⤛ U+291C, U+291B RIGHT/LEFTWARDS DOUBLE ARROW-TAIL
644 ⤞ ⤝ U+291E, U+291D RIGHT/LEFTWARDS ARROW TO BLACK DIAMOND
645 ⤠ ⤟ U+2920, U+291F RIGHT/LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
646 ⤳ ⬿ U+2933, U+2B3F WAVE ARROW POINTING DIRECTLY RIGHT/LEFT
647 ⤷ ⤶ U+2937, U+2936 ARROW POINTING DOWNWARDS THEN CURVING RIGHT/
649 ⥅ ⥆ U+2945, U+2946 RIGHT/LEFTWARDS ARROW WITH PLUS BELOW
650 ⥇ ⬾ U+2947, U+2B3E RIGHT/LEFTWARDS ARROW THROUGH X
651 ⥓ ⥒ U+2953, U+2952 RIGHT/LEFTWARDS HARPOON WITH BARB UP TO BAR
652 ⥗ ⥖ U+2957, U+2956 RIGHT/LEFTWARDS HARPOON WITH BARB DOWN TO BAR
653 ⥛ ⥚ U+295B, U+295A RIGHT/LEFTWARDS HARPOON WITH BARB UP FROM BAR
654 ⥟ ⥞ U+295F, U+295E RIGHT/LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
655 ⥤ ⥢ U+2964, U+2962 RIGHT/LEFTWARDS HARPOON WITH BARB UP ABOVE
656 RIGHT/LEFTWARDS HARPOON WITH BARB DOWN
657 ⥬ ⥪ U+296C, U+296A RIGHT/LEFTWARDS HARPOON WITH BARB UP ABOVE LONG
659 ⥭ ⥫ U+296D, U+296B RIGHT/LEFTWARDS HARPOON WITH BARB DOWN BELOW
661 ⥱ ⭀ U+2971, U+2B40 EQUALS SIGN ABOVE RIGHT/LEFTWARDS ARROW
662 ⥲ ⭁ U+2972, U+2B41 TILDE OPERATOR ABOVE RIGHTWARDS ARROW, REVERSE
663 TILDE OPERATOR ABOVE LEFTWARDS ARROW
664 ⥴ ⭋ U+2974, U+2B4B RIGHTWARDS ARROW ABOVE TILDE OPERATOR,
665 LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
666 ⥵ ⭂ U+2975, U+2B42 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO,
667 LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
668 ⥹ ⥻ U+2979, U+297B SUBSET/SUPERSET ABOVE RIGHT/LEFTWARDS ARROW
669 ⦃ ⦄ U+2983, U+2984 LEFT/RIGHT WHITE CURLY BRACKET
670 ⦅ ⦆ U+2985, U+2986 LEFT/RIGHT WHITE PARENTHESIS
671 ⦇ ⦈ U+2987, U+2988 Z NOTATION LEFT/RIGHT IMAGE BRACKET
672 ⦉ ⦊ U+2989, U+298A Z NOTATION LEFT/RIGHT BINDING BRACKET
673 ⦋ ⦌ U+298B, U+298C LEFT/RIGHT SQUARE BRACKET WITH UNDERBAR
674 ⦍ ⦐ U+298D, U+2990 LEFT/RIGHT SQUARE BRACKET WITH TICK IN TOP
676 ⦏ ⦎ U+298F, U+298E LEFT/RIGHT SQUARE BRACKET WITH TICK IN BOTTOM
678 ⦑ ⦒ U+2991, U+2992 LEFT/RIGHT ANGLE BRACKET WITH DOT
679 ⦓ ⦔ U+2993, U+2994 LEFT/RIGHT ARC LESS-THAN/GREATER-THAN BRACKET
680 ⦕ ⦖ U+2995, U+2996 DOUBLE LEFT/RIGHT ARC GREATER-THAN/LESS-THAN
682 ⦗ ⦘ U+2997, U+2998 LEFT/RIGHT BLACK TORTOISE SHELL BRACKET
683 ⦨ ⦩ U+29A8, U+29A9 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW
684 POINTING UP AND RIGHT/LEFT
685 ⦪ ⦫ U+29AA, U+29AB MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW
686 POINTING DOWN AND RIGHT/LEFT
687 ⦳ ⦴ U+29B3, U+29B4 EMPTY SET WITH RIGHT/LEFT ARROW ABOVE
688 ⧀ ⧁ U+29C0, U+29C1 CIRCLED LESS-THAN/GREATER-THAN
689 ⧘ ⧙ U+29D8, U+29D9 LEFT/RIGHT WIGGLY FENCE
690 ⧚ ⧛ U+29DA, U+29DB LEFT/RIGHT DOUBLE WIGGLY FENCE
691 ⧼ ⧽ U+29FC, U+29FD LEFT/RIGHT-POINTING CURVED ANGLE BRACKET
692 ⩹ ⩺ U+2A79, U+2A7A LESS-THAN/GREATER-THAN WITH CIRCLE INSIDE
693 ⩻ ⩼ U+2A7B, U+2A7C LESS-THAN/GREATER-THAN WITH QUESTION MARK ABOVE
694 ⩽ ⩾ U+2A7D, U+2A7E LESS-THAN/GREATER-THAN OR SLANTED EQUAL TO
695 ⩿ ⪀ U+2A7F, U+2A80 LESS-THAN/GREATER-THAN OR SLANTED EQUAL TO WITH
697 ⪁ ⪂ U+2A81, U+2A82 LESS-THAN/GREATER-THAN OR SLANTED EQUAL TO WITH
699 ⪃ ⪄ U+2A83, U+2A84 LESS-THAN/GREATER-THAN OR SLANTED EQUAL TO WITH
701 ⪅ ⪆ U+2A85, U+2A86 LESS-THAN/GREATER-THAN OR APPROXIMATE
702 ⪇ ⪈ U+2A87, U+2A88 LESS-THAN/GREATER-THAN AND SINGLE-LINE NOT
704 ⪉ ⪊ U+2A89, U+2A8A LESS-THAN/GREATER-THAN AND NOT APPROXIMATE
705 ⪍ ⪎ U+2A8D, U+2A8E LESS-THAN/GREATER-THAN ABOVE SIMILAR OR EQUAL
706 ⪕ ⪖ U+2A95, U+2A96 SLANTED EQUAL TO OR LESS-THAN/GREATER-THAN
707 ⪗ ⪘ U+2A97, U+2A98 SLANTED EQUAL TO OR LESS-THAN/GREATER-THAN WITH
709 ⪙ ⪚ U+2A99, U+2A9A DOUBLE-LINE EQUAL TO OR LESS-THAN/GREATER-THAN
710 ⪛ ⪜ U+2A9B, U+2A9C DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN/
712 ⪝ ⪞ U+2A9D, U+2A9E SIMILAR OR LESS-THAN/GREATER-THAN
713 ⪟ ⪠ U+2A9F, U+2AA0 SIMILAR ABOVE LESS-THAN/GREATER-THAN ABOVE
715 ⪡ ⪢ U+2AA1, U+2AA2 DOUBLE NESTED LESS-THAN/GREATER-THAN
716 ⪦ ⪧ U+2AA6, U+2AA7 LESS-THAN/GREATER-THAN CLOSED BY CURVE
717 ⪨ ⪩ U+2AA8, U+2AA9 LESS-THAN/GREATER-THAN CLOSED BY CURVE ABOVE
719 ⪪ ⪫ U+2AAA, U+2AAB SMALLER THAN/LARGER THAN
720 ⪬ ⪭ U+2AAC, U+2AAD SMALLER THAN/LARGER THAN OR EQUAL TO
721 ⪯ ⪰ U+2AAF, U+2AB0 PRECEDES/SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
722 ⪱ ⪲ U+2AB1, U+2AB2 PRECEDES/SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
723 ⪳ ⪴ U+2AB3, U+2AB4 PRECEDES/SUCCEEDS ABOVE EQUALS SIGN
724 ⪵ ⪶ U+2AB5, U+2AB6 PRECEDES/SUCCEEDS ABOVE NOT EQUAL TO
725 ⪷ ⪸ U+2AB7, U+2AB8 PRECEDES/SUCCEEDS ABOVE ALMOST EQUAL TO
726 ⪹ ⪺ U+2AB9, U+2ABA PRECEDES/SUCCEEDS ABOVE NOT ALMOST EQUAL TO
727 ⪻ ⪼ U+2ABB, U+2ABC DOUBLE PRECEDES/SUCCEEDS
728 ⪽ ⪾ U+2ABD, U+2ABE SUBSET/SUPERSET WITH DOT
729 ⪿ ⫀ U+2ABF, U+2AC0 SUBSET/SUPERSET WITH PLUS SIGN BELOW
730 ⫁ ⫂ U+2AC1, U+2AC2 SUBSET/SUPERSET WITH MULTIPLICATION SIGN BELOW
731 ⫃ ⫄ U+2AC3, U+2AC4 SUBSET/SUPERSET OF OR EQUAL TO WITH DOT ABOVE
732 ⫅ ⫆ U+2AC5, U+2AC6 SUBSET/SUPERSET OF ABOVE EQUALS SIGN
733 ⫇ ⫈ U+2AC7, U+2AC8 SUBSET/SUPERSET OF ABOVE TILDE OPERATOR
734 ⫉ ⫊ U+2AC9, U+2ACA SUBSET/SUPERSET OF ABOVE ALMOST EQUAL TO
735 ⫋ ⫌ U+2ACB, U+2ACC SUBSET/SUPERSET OF ABOVE NOT EQUAL TO
736 ⫏ ⫐ U+2ACF, U+2AD0 CLOSED SUBSET/SUPERSET
737 ⫑ ⫒ U+2AD1, U+2AD2 CLOSED SUBSET/SUPERSET OR EQUAL TO
738 ⫕ ⫖ U+2AD5, U+2AD6 SUBSET/SUPERSET ABOVE SUBSET/SUPERSET
739 ⫥ ⊫ U+2AE5, U+22AB DOUBLE VERTICAL BAR DOUBLE LEFT/RIGHT TURNSTILE
740 ⫷ ⫸ U+2AF7, U+2AF8 TRIPLE NESTED LESS-THAN/GREATER-THAN
741 ⫹ ⫺ U+2AF9, U+2AFA DOUBLE-LINE SLANTED LESS-THAN/GREATER-THAN OR
743 ⭆ ⭅ U+2B46, U+2B45 RIGHT/LEFTWARDS QUADRUPLE ARROW
744 ⭇ ⭉ U+2B47, U+2B49 REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW,
745 TILDE OPERATOR ABOVE LEFTWARDS ARROW
746 ⭈ ⭊ U+2B48, U+2B4A RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL
747 TO, LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
748 ⭌ ⥳ U+2B4C, U+2973 RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR,
749 LEFTWARDS ARROW ABOVE TILDE OPERATOR
750 ⭢ ⭠ U+2B62, U+2B60 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW
751 ⭬ ⭪ U+2B6C, U+2B6A RIGHT/LEFTWARDS TRIANGLE-HEADED DASHED ARROW
752 ⭲ ⭰ U+2B72, U+2B70 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW TO BAR
753 ⭼ ⭺ U+2B7C, U+2B7A RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH
754 DOUBLE VERTICAL STROKE
755 ⮆ ⮄ U+2B86, U+2B84 RIGHT/LEFTWARDS TRIANGLE-HEADED PAIRED ARROWS
756 ⮊ ⮈ U+2B8A, U+2B88 RIGHT/LEFTWARDS BLACK CIRCLED WHITE ARROW
757 ⮕ ⬅ U+2B95, U+2B05 RIGHT/LEFTWARDS BLACK ARROW
758 ⮚ ⮘ U+2B9A, U+2B98 THREE-D TOP-LIGHTED RIGHT/LEFTWARDS EQUILATERAL
760 ⮞ ⮜ U+2B9E, U+2B9C BLACK RIGHT/LEFTWARDS EQUILATERAL ARROWHEAD
761 ⮡ ⮠ U+2BA1, U+2BA0 DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP
763 ⮣ ⮢ U+2BA3, U+2BA2 UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP
765 ⮩ ⮨ U+2BA9, U+2BA8 BLACK CURVED DOWNWARDS AND RIGHT/LEFTWARDS ARROW
766 ⮫ ⮪ U+2BAB, U+2BAA BLACK CURVED UPWARDS AND RIGHT/LEFTWARDS ARROW
767 ⮱ ⮰ U+2BB1, U+2BB0 RIBBON ARROW DOWN RIGHT/LEFT
768 ⮳ ⮲ U+2BB3, U+2BB2 RIBBON ARROW UP RIGHT/LEFT
769 ⯮ ⯬ U+2BEE, U+2BEC RIGHT/LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE
771 ⸂ ⸃ U+2E02, U+2E03 LEFT/RIGHT SUBSTITUTION BRACKET
772 ⸃ ⸂ U+2E03, U+2E02 RIGHT/LEFT SUBSTITUTION BRACKET
773 ⸄ ⸅ U+2E04, U+2E05 LEFT/RIGHT DOTTED SUBSTITUTION BRACKET
774 ⸅ ⸄ U+2E05, U+2E04 RIGHT/LEFT DOTTED SUBSTITUTION BRACKET
775 ⸉ ⸊ U+2E09, U+2E0A LEFT/RIGHT TRANSPOSITION BRACKET
776 ⸊ ⸉ U+2E0A, U+2E09 RIGHT/LEFT TRANSPOSITION BRACKET
777 ⸌ ⸍ U+2E0C, U+2E0D LEFT/RIGHT RAISED OMISSION BRACKET
778 ⸍ ⸌ U+2E0D, U+2E0C RIGHT/LEFT RAISED OMISSION BRACKET
779 ⸑ ⸐ U+2E11, U+2E10 REVERSED FORKED PARAGRAPHOS, FORKED PARAGRAPHOS
780 ⸜ ⸝ U+2E1C, U+2E1D LEFT/RIGHT LOW PARAPHRASE BRACKET
781 ⸝ ⸜ U+2E1D, U+2E1C RIGHT/LEFT LOW PARAPHRASE BRACKET
782 ⸠ ⸡ U+2E20, U+2E21 LEFT/RIGHT VERTICAL BAR WITH QUILL
783 ⸡ ⸠ U+2E21, U+2E20 RIGHT/LEFT VERTICAL BAR WITH QUILL
784 ⸢ ⸣ U+2E22, U+2E23 TOP LEFT/RIGHT HALF BRACKET
785 ⸤ ⸥ U+2E24, U+2E25 BOTTOM LEFT/RIGHT HALF BRACKET
786 ⸦ ⸧ U+2E26, U+2E27 LEFT/RIGHT SIDEWAYS U BRACKET
787 ⸨ ⸩ U+2E28, U+2E29 LEFT/RIGHT DOUBLE PARENTHESIS
788 ⸶ ⸷ U+2E36, U+2E37 DAGGER WITH LEFT/RIGHT GUARD
789 ⹂ „ U+2E42, U+201E DOUBLE LOW-REVERSED-9 QUOTATION MARK, DOUBLE
791 ⹕ ⹖ U+2E55, U+2E56 LEFT/RIGHT SQUARE BRACKET WITH STROKE
792 ⹗ ⹘ U+2E57, U+2E58 LEFT/RIGHT SQUARE BRACKET WITH DOUBLE STROKE
793 ⹙ ⹚ U+2E59, U+2E5A TOP HALF LEFT/RIGHT PARENTHESIS
794 ⹛ ⹜ U+2E5B, U+2E5C BOTTOM HALF LEFT/RIGHT PARENTHESIS
795 〈 〉 U+3008, U+3009 LEFT/RIGHT ANGLE BRACKET
796 《 》 U+300A, U+300B LEFT/RIGHT DOUBLE ANGLE BRACKET
797 「 」 U+300C, U+300D LEFT/RIGHT CORNER BRACKET
798 『 』 U+300E, U+300F LEFT/RIGHT WHITE CORNER BRACKET
799 【 】 U+3010, U+3011 LEFT/RIGHT BLACK LENTICULAR BRACKET
800 〔 〕 U+3014, U+3015 LEFT/RIGHT TORTOISE SHELL BRACKET
801 〖 〗 U+3016, U+3017 LEFT/RIGHT WHITE LENTICULAR BRACKET
802 〘 〙 U+3018, U+3019 LEFT/RIGHT WHITE TORTOISE SHELL BRACKET
803 〚 〛 U+301A, U+301B LEFT/RIGHT WHITE SQUARE BRACKET
804 〝 〞 U+301D, U+301E REVERSED DOUBLE PRIME QUOTATION MARK, DOUBLE
806 ꧁ ꧂ U+A9C1, U+A9C2 JAVANESE LEFT/RIGHT RERENGGAN
807 ﴾ ﴿ U+FD3E, U+FD3F ORNATE LEFT/RIGHT PARENTHESIS
808 ﹙ ﹚ U+FE59, U+FE5A SMALL LEFT/RIGHT PARENTHESIS
809 ﹛ ﹜ U+FE5B, U+FE5C SMALL LEFT/RIGHT CURLY BRACKET
810 ﹝ ﹞ U+FE5D, U+FE5E SMALL LEFT/RIGHT TORTOISE SHELL BRACKET
811 ﹤ ﹥ U+FE64, U+FE65 SMALL LESS-THAN/GREATER-THAN SIGN
812 ( ) U+FF08, U+FF09 FULLWIDTH LEFT/RIGHT PARENTHESIS
813 < > U+FF1C, U+FF1E FULLWIDTH LESS-THAN/GREATER-THAN SIGN
814 [ ] U+FF3B, U+FF3D FULLWIDTH LEFT/RIGHT SQUARE BRACKET
815 { } U+FF5B, U+FF5D FULLWIDTH LEFT/RIGHT CURLY BRACKET
816 ⦅ ⦆ U+FF5F, U+FF60 FULLWIDTH LEFT/RIGHT WHITE PARENTHESIS
817 「 」 U+FF62, U+FF63 HALFWIDTH LEFT/RIGHT CORNER BRACKET
818 → ← U+FFEB, U+FFE9 HALFWIDTH RIGHT/LEFTWARDS ARROW
819 𝄃 𝄂 U+1D103, U+1D102 MUSICAL SYMBOL REVERSE FINAL BARLINE, MUSICAL
821 𝄆 𝄇 U+1D106, U+1D107 MUSICAL SYMBOL LEFT/RIGHT REPEAT SIGN
822 👉 👈 U+1F449, U+1F448 WHITE RIGHT/LEFT POINTING BACKHAND INDEX
823 🔈 🕨 U+1F508, U+1F568 SPEAKER, RIGHT SPEAKER
824 🔉 🕩 U+1F509, U+1F569 SPEAKER WITH ONE SOUND WAVE, RIGHT SPEAKER WITH
826 🔊 🕪 U+1F50A, U+1F56A SPEAKER WITH THREE SOUND WAVES, RIGHT SPEAKER
827 WITH THREE SOUND WAVES
828 🕻 🕽 U+1F57B, U+1F57D LEFT/RIGHT HAND TELEPHONE RECEIVER
829 🖙 🖘 U+1F599, U+1F598 SIDEWAYS WHITE RIGHT/LEFT POINTING INDEX
830 🖛 🖚 U+1F59B, U+1F59A SIDEWAYS BLACK RIGHT/LEFT POINTING INDEX
831 🖝 🖜 U+1F59D, U+1F59C BLACK RIGHT/LEFT POINTING BACKHAND INDEX
832 🗦 🗧 U+1F5E6, U+1F5E7 THREE RAYS LEFT/RIGHT
833 🠂 🠀 U+1F802, U+1F800 RIGHT/LEFTWARDS ARROW WITH SMALL TRIANGLE
835 🠆 🠄 U+1F806, U+1F804 RIGHT/LEFTWARDS ARROW WITH MEDIUM TRIANGLE
837 🠊 🠈 U+1F80A, U+1F808 RIGHT/LEFTWARDS ARROW WITH LARGE TRIANGLE
839 🠒 🠐 U+1F812, U+1F810 RIGHT/LEFTWARDS ARROW WITH SMALL EQUILATERAL
841 🠖 🠔 U+1F816, U+1F814 RIGHT/LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD
842 🠚 🠘 U+1F81A, U+1F818 HEAVY RIGHT/LEFTWARDS ARROW WITH EQUILATERAL
844 🠞 🠜 U+1F81E, U+1F81C HEAVY RIGHT/LEFTWARDS ARROW WITH LARGE
845 EQUILATERAL ARROWHEAD
846 🠢 🠠 U+1F822, U+1F820 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH
848 🠦 🠤 U+1F826, U+1F824 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH
850 🠪 🠨 U+1F82A, U+1F828 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH BOLD
852 🠮 🠬 U+1F82E, U+1F82C RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH
854 🠲 🠰 U+1F832, U+1F830 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH VERY
856 🠶 🠴 U+1F836, U+1F834 RIGHT/LEFTWARDS FINGER-POST ARROW
857 🠺 🠸 U+1F83A, U+1F838 RIGHT/LEFTWARDS SQUARED ARROW
858 🠾 🠼 U+1F83E, U+1F83C RIGHT/LEFTWARDS COMPRESSED ARROW
859 🡂 🡀 U+1F842, U+1F840 RIGHT/LEFTWARDS HEAVY COMPRESSED ARROW
860 🡆 🡄 U+1F846, U+1F844 RIGHT/LEFTWARDS HEAVY ARROW
861 🡒 🡐 U+1F852, U+1F850 RIGHT/LEFTWARDS SANS-SERIF ARROW
862 🡢 🡠 U+1F862, U+1F860 WIDE-HEADED RIGHT/LEFTWARDS LIGHT BARB ARROW
863 🡪 🡨 U+1F86A, U+1F868 WIDE-HEADED RIGHT/LEFTWARDS BARB ARROW
864 🡲 🡰 U+1F872, U+1F870 WIDE-HEADED RIGHT/LEFTWARDS MEDIUM BARB ARROW
865 🡺 🡸 U+1F87A, U+1F878 WIDE-HEADED RIGHT/LEFTWARDS HEAVY BARB ARROW
866 🢂 🢀 U+1F882, U+1F880 WIDE-HEADED RIGHT/LEFTWARDS VERY HEAVY BARB
868 🢒 🢐 U+1F892, U+1F890 RIGHT/LEFTWARDS TRIANGLE ARROWHEAD
869 🢖 🢔 U+1F896, U+1F894 RIGHT/LEFTWARDS WHITE ARROW WITHIN TRIANGLE
871 🢚 🢘 U+1F89A, U+1F898 RIGHT/LEFTWARDS ARROW WITH NOTCHED TAIL
872 🢡 🢠 U+1F8A1, U+1F8A0 RIGHTWARDS BOTTOM SHADED WHITE ARROW,
873 LEFTWARDS BOTTOM-SHADED WHITE ARROW
874 🢣 🢢 U+1F8A3, U+1F8A2 RIGHT/LEFTWARDS TOP SHADED WHITE ARROW
875 🢥 🢦 U+1F8A5, U+1F8A6 RIGHT/LEFTWARDS RIGHT-SHADED WHITE ARROW
876 🢧 🢤 U+1F8A7, U+1F8A4 RIGHT/LEFTWARDS LEFT-SHADED WHITE ARROW
877 🢩 🢨 U+1F8A9, U+1F8A8 RIGHT/LEFTWARDS BACK-TILTED SHADOWED WHITE ARROW
878 🢫 🢪 U+1F8AB, U+1F8AA RIGHT/LEFTWARDS FRONT-TILTED SHADOWED WHITE
881 =head2 The 'module_true' feature
883 This feature removes the need to return a true value at the end of a module
884 loaded with C<require> or C<use>. Any errors during compilation will cause
885 failures, but reaching the end of the module when this feature is in effect
886 will prevent C<perl> from throwing an exception that the module "did not return
889 =head2 The 'class' feature
891 B<WARNING>: This feature is still experimental and the implementation may
892 change or be removed in future versions of Perl. For this reason, Perl will
893 warn when you use the feature, unless you have explicitly disabled the warning:
895 no warnings "experimental::class";
897 This feature enables the C<class> block syntax and other associated keywords
898 which implement the "new" object system, previously codenamed "Corinna".
900 =head1 FEATURE BUNDLES
902 It's possible to load multiple features together, using
903 a I<feature bundle>. The name of a feature bundle is prefixed with
904 a colon, to distinguish it from an actual feature.
908 The following feature bundles are available:
910 bundle features included
911 --------- -----------------
912 :default indirect multidimensional
915 :5.10 bareword_filehandles indirect
916 multidimensional say state switch
918 :5.12 bareword_filehandles indirect
919 multidimensional say state switch
922 :5.14 bareword_filehandles indirect
923 multidimensional say state switch
926 :5.16 bareword_filehandles current_sub evalbytes
927 fc indirect multidimensional say state
928 switch unicode_eval unicode_strings
930 :5.18 bareword_filehandles current_sub evalbytes
931 fc indirect multidimensional say state
932 switch unicode_eval unicode_strings
934 :5.20 bareword_filehandles current_sub evalbytes
935 fc indirect multidimensional say state
936 switch unicode_eval unicode_strings
938 :5.22 bareword_filehandles current_sub evalbytes
939 fc indirect multidimensional say state
940 switch unicode_eval unicode_strings
942 :5.24 bareword_filehandles current_sub evalbytes
943 fc indirect multidimensional postderef_qq
944 say state switch unicode_eval
947 :5.26 bareword_filehandles current_sub evalbytes
948 fc indirect multidimensional postderef_qq
949 say state switch unicode_eval
952 :5.28 bareword_filehandles bitwise current_sub
953 evalbytes fc indirect multidimensional
954 postderef_qq say state switch unicode_eval
957 :5.30 bareword_filehandles bitwise current_sub
958 evalbytes fc indirect multidimensional
959 postderef_qq say state switch unicode_eval
962 :5.32 bareword_filehandles bitwise current_sub
963 evalbytes fc indirect multidimensional
964 postderef_qq say state switch unicode_eval
967 :5.34 bareword_filehandles bitwise current_sub
968 evalbytes fc indirect multidimensional
969 postderef_qq say state switch unicode_eval
972 :5.36 bareword_filehandles bitwise current_sub
973 evalbytes fc isa postderef_qq say signatures
974 state unicode_eval unicode_strings
976 :5.38 bitwise current_sub evalbytes fc isa
977 module_true postderef_qq say signatures
978 state unicode_eval unicode_strings
980 :5.40 bitwise current_sub evalbytes fc isa
981 module_true postderef_qq say signatures
982 state unicode_eval unicode_strings
984 The C<:default> bundle represents the feature set that is enabled before
985 any C<use feature> or C<no feature> declaration.
987 Specifying sub-versions such as the C<0> in C<5.14.0> in feature bundles has
988 no effect. Feature bundles are guaranteed to be the same for all sub-versions.
990 use feature ":5.14.0"; # same as ":5.14"
991 use feature ":5.14.1"; # same as ":5.14"
1001 but the first may enable features in a later version of Perl that
1002 change the meaning of your code, and the second may disable mechanisms
1003 that are part of Perl's current behavior that have been turned into
1004 features, just as C<indirect> and C<bareword_filehandles> were.
1006 =head1 IMPLICIT LOADING
1008 Instead of loading feature bundles by name, it is easier to let Perl do
1009 implicit loading of a feature bundle for you.
1011 There are two ways to load the C<feature> pragma implicitly:
1017 By using the C<-E> switch on the Perl command-line instead of C<-e>.
1018 That will enable the feature bundle for that version of Perl in the
1019 main compilation unit (that is, the one-liner that follows C<-E>).
1023 By explicitly requiring a minimum Perl version number for your program, with
1024 the C<use VERSION> construct. That is,
1031 use feature ':5.36';
1033 and so on. Note how the trailing sub-version
1034 is automatically stripped from the
1037 But to avoid portability warnings (see L<perlfunc/use>), you may prefer:
1041 with the same effect.
1043 If the required version is older than Perl 5.10, the ":default" feature
1044 bundle is automatically loaded instead.
1046 Unlike C<use feature ":5.12">, saying C<use v5.12> (or any higher version)
1047 also does the equivalent of C<use strict>; see L<perlfunc/use> for details.
1051 =head1 CHECKING FEATURES
1053 C<feature> provides some simple APIs to check which features are enabled.
1055 These functions cannot be imported and must be called by their fully
1056 qualified names. If you don't otherwise need to set a feature you will
1057 need to ensure C<feature> is loaded with:
1063 =item feature_enabled($feature)
1065 =item feature_enabled($feature, $depth)
1067 package MyStandardEnforcer;
1071 croak "disable indirect!" if feature::feature_enabled("indirect");
1074 Test whether a named feature is enabled at a given level in the call
1075 stack, returning a true value if it is. C<$depth> defaults to 1,
1076 which checks the scope that called the scope calling
1077 feature::feature_enabled().
1079 croaks for an unknown feature name.
1081 =item features_enabled()
1083 =item features_enabled($depth)
1085 package ReportEnabledFeatures;
1088 say STDERR join " ", feature::features_enabled();
1091 Returns a list of the features enabled at a given level in the call
1092 stack. C<$depth> defaults to 1, which checks the scope that called
1093 the scope calling feature::features_enabled().
1095 =item feature_bundle()
1097 =item feature_bundle($depth)
1099 Returns the feature bundle, if any, selected at a given level in the
1100 call stack. C<$depth> defaults to 1, which checks the scope that called
1101 the scope calling feature::feature_bundle().
1103 Returns an undefined value if no feature bundle is selected in the
1106 The bundle name returned will be for the earliest bundle matching the
1107 selected bundle, so:
1111 BEGIN { print feature::feature_bundle(0); }
1115 This returns internal state, at this point C<use v5.12;> sets the
1116 feature bundle, but C< use feature ":5.12"; > does not set the feature
1117 bundle. This may change in a future release of perl.
1127 croak("No features specified");
1136 # A bare C<no feature> should reset to the default bundle
1138 $^H &= ~($hint_uni8bit|$hint_mask);
1148 my $bundle_number = $^H & $hint_mask;
1149 my $features = $bundle_number != $hint_mask
1150 && $feature_bundle{$hint_bundles[$bundle_number >> $hint_shift]};
1152 # Features are enabled implicitly via bundle hints.
1153 # Delete any keys that may be left over from last time.
1154 delete @^H{ values(%feature) };
1157 $^H{$feature{$_}} = 1;
1158 $^H |= $hint_uni8bit if $_ eq 'unicode_strings';
1163 if (substr($name, 0, 1) eq ":") {
1164 my $v = substr($name, 1);
1165 if (!exists $feature_bundle{$v}) {
1166 $v =~ s/^([0-9]+)\.([0-9]+).[0-9]+$/$1.$2/;
1167 if (!exists $feature_bundle{$v}) {
1168 unknown_feature_bundle(substr($name, 1));
1171 unshift @_, @{$feature_bundle{$v}};
1174 if (!exists $feature{$name}) {
1175 if (exists $noops{$name}) {
1178 if (!$import && exists $removed{$name}) {
1181 unknown_feature($name);
1184 $^H{$feature{$name}} = 1;
1185 $^H |= $hint_uni8bit if $name eq 'unicode_strings';
1187 delete $^H{$feature{$name}};
1188 $^H &= ~ $hint_uni8bit if $name eq 'unicode_strings';
1193 sub unknown_feature {
1194 my $feature = shift;
1195 croak(sprintf('Feature "%s" is not supported by Perl %vd',
1199 sub unknown_feature_bundle {
1200 my $feature = shift;
1201 croak(sprintf('Feature bundle "%s" is not supported by Perl %vd',
1210 sub features_enabled {
1214 my @frame = caller($depth+1)
1216 my ($hints, $hinthash) = @frame[8, 10];
1218 my $bundle_number = $hints & $hint_mask;
1219 if ($bundle_number != $hint_mask) {
1220 return $feature_bundle{$hint_bundles[$bundle_number >> $hint_shift]}->@*;
1224 for my $feature (sort keys %feature) {
1225 if ($hinthash->{$feature{$feature}}) {
1226 push @features, $feature;
1233 sub feature_enabled {
1234 my ($feature, $depth) = @_;
1237 my @frame = caller($depth+1)
1239 my ($hints, $hinthash) = @frame[8, 10];
1241 my $hint_feature = $feature{$feature}
1242 or croak "Unknown feature $feature";
1243 my $bundle_number = $hints & $hint_mask;
1244 if ($bundle_number != $hint_mask) {
1245 my $bundle = $hint_bundles[$bundle_number >> $hint_shift];
1246 for my $bundle_feature ($feature_bundle{$bundle}->@*) {
1247 return 1 if $bundle_feature eq $feature;
1252 return $hinthash->{$hint_feature} // 0;
1256 sub feature_bundle {
1260 my @frame = caller($depth+1)
1262 my $bundle_number = $frame[8] & $hint_mask;
1263 if ($bundle_number != $hint_mask) {
1264 return $hint_bundles[$bundle_number >> $hint_shift];
1273 # ex: set ro ft=perl: