1feature(3pm)           Perl Programmers Reference Guide           feature(3pm)
2
3
4

NAME

6       feature - Perl pragma to enable new features
7

SYNOPSIS

9           use feature qw(say switch);
10           given ($foo) {
11               when (1)          { say "\$foo == 1" }
12               when ([2,3])      { say "\$foo == 2 || \$foo == 3" }
13               when (/^a[bc]d$/) { say "\$foo eq 'abd' || \$foo eq 'acd'" }
14               when ($_ > 100)   { say "\$foo > 100" }
15               default           { say "None of the above" }
16           }
17
18           use feature ':5.10'; # loads all features available in perl 5.10
19
20           use v5.10;           # implicitly loads :5.10 feature bundle
21

DESCRIPTION

23       It is usually impossible to add new syntax to Perl without breaking
24       some existing programs.  This pragma provides a way to minimize that
25       risk. New syntactic constructs, or new semantic meanings to older
26       constructs, can be enabled by "use feature 'foo'", and will be parsed
27       only when the appropriate feature pragma is in scope.  (Nevertheless,
28       the "CORE::" prefix provides access to all Perl keywords, regardless of
29       this pragma.)
30
31   Lexical effect
32       Like other pragmas ("use strict", for example), features have a lexical
33       effect.  "use feature qw(foo)" will only make the feature "foo"
34       available from that point to the end of the enclosing block.
35
36           {
37               use feature 'say';
38               say "say is available here";
39           }
40           print "But not here.\n";
41
42   "no feature"
43       Features can also be turned off by using "no feature "foo"".  This too
44       has lexical effect.
45
46           use feature 'say';
47           say "say is available here";
48           {
49               no feature 'say';
50               print "But not here.\n";
51           }
52           say "Yet it is here.";
53
54       "no feature" with no features specified will reset to the default
55       group.  To disable all features (an unusual request!) use "no feature
56       ':all'".
57

AVAILABLE FEATURES

59   The 'say' feature
60       "use feature 'say'" tells the compiler to enable the Perl 6 style "say"
61       function.
62
63       See "say" in perlfunc for details.
64
65       This feature is available starting with Perl 5.10.
66
67   The 'state' feature
68       "use feature 'state'" tells the compiler to enable "state" variables.
69
70       See "Persistent Private Variables" in perlsub for details.
71
72       This feature is available starting with Perl 5.10.
73
74   The 'switch' feature
75       WARNING: Because the smartmatch operator is experimental, Perl will
76       warn when you use this feature, unless you have explicitly disabled the
77       warning:
78
79           no warnings "experimental::smartmatch";
80
81       "use feature 'switch'" tells the compiler to enable the Perl 6
82       given/when construct.
83
84       See "Switch Statements" in perlsyn for details.
85
86       This feature is available starting with Perl 5.10.
87
88   The 'unicode_strings' feature
89       "use feature 'unicode_strings'" tells the compiler to use Unicode rules
90       in all string operations executed within its scope (unless they are
91       also within the scope of either "use locale" or "use bytes").  The same
92       applies to all regular expressions compiled within the scope, even if
93       executed outside it.  It does not change the internal representation of
94       strings, but only how they are interpreted.
95
96       "no feature 'unicode_strings'" tells the compiler to use the
97       traditional Perl rules wherein the native character set rules is used
98       unless it is clear to Perl that Unicode is desired.  This can lead to
99       some surprises when the behavior suddenly changes.  (See "The "Unicode
100       Bug"" in perlunicode for details.)  For this reason, if you are
101       potentially using Unicode in your program, the "use feature
102       'unicode_strings'" subpragma is strongly recommended.
103
104       This feature is available starting with Perl 5.12; was almost fully
105       implemented in Perl 5.14; and extended in Perl 5.16 to cover
106       "quotemeta"; was extended further in Perl 5.26 to cover the range
107       operator; and was extended again in Perl 5.28 to cover special-cased
108       whitespace splitting.
109
110   The 'unicode_eval' and 'evalbytes' features
111       Together, these two features are intended to replace the legacy string
112       "eval" function, which behaves problematically in some instances.  They
113       are available starting with Perl 5.16, and are enabled by default by a
114       "use 5.16" or higher declaration.
115
116       "unicode_eval" changes the behavior of plain string "eval" to work more
117       consistently, especially in the Unicode world.  Certain (mis)behaviors
118       couldn't be changed without breaking some things that had come to rely
119       on them, so the feature can be enabled and disabled.  Details are at
120       "Under the "unicode_eval" feature" in perlfunc.
121
122       "evalbytes" is like string "eval", but operating on a byte stream that
123       is not UTF-8 encoded.  Details are at "evalbytes EXPR" in perlfunc.
124       Without a "use feature 'evalbytes'" nor a "use v5.16" (or higher)
125       declaration in the current scope, you can still access it by instead
126       writing "CORE::evalbytes".
127
128   The 'current_sub' feature
129       This provides the "__SUB__" token that returns a reference to the
130       current subroutine or "undef" outside of a subroutine.
131
132       This feature is available starting with Perl 5.16.
133
134   The 'array_base' feature
135       This feature supports the legacy $[ variable.  See "$[" in perlvar and
136       arybase.  It is on by default but disabled under "use v5.16" (see
137       "IMPLICIT LOADING", below).
138
139       This feature is available under this name starting with Perl 5.16.  In
140       previous versions, it was simply on all the time, and this pragma knew
141       nothing about it.
142
143   The 'fc' feature
144       "use feature 'fc'" tells the compiler to enable the "fc" function,
145       which implements Unicode casefolding.
146
147       See "fc" in perlfunc for details.
148
149       This feature is available from Perl 5.16 onwards.
150
151   The 'lexical_subs' feature
152       In Perl versions prior to 5.26, this feature enabled declaration of
153       subroutines via "my sub foo", "state sub foo" and "our sub foo" syntax.
154       See "Lexical Subroutines" in perlsub for details.
155
156       This feature is available from Perl 5.18 onwards.  From Perl 5.18 to
157       5.24, it was classed as experimental, and Perl emitted a warning for
158       its usage, except when explicitly disabled:
159
160         no warnings "experimental::lexical_subs";
161
162       As of Perl 5.26, use of this feature no longer triggers a warning,
163       though the "experimental::lexical_subs" warning category still exists
164       (for compatibility with code that disables it).  In addition, this
165       syntax is not only no longer experimental, but it is enabled for all
166       Perl code, regardless of what feature declarations are in scope.
167
168   The 'postderef' and 'postderef_qq' features
169       The 'postderef_qq' feature extends the applicability of postfix
170       dereference syntax so that postfix array and scalar dereference are
171       available in double-quotish interpolations. For example, it makes the
172       following two statements equivalent:
173
174         my $s = "[@{ $h->{a} }]";
175         my $s = "[$h->{a}->@*]";
176
177       This feature is available from Perl 5.20 onwards. In Perl 5.20 and
178       5.22, it was classed as experimental, and Perl emitted a warning for
179       its usage, except when explicitly disabled:
180
181         no warnings "experimental::postderef";
182
183       As of Perl 5.24, use of this feature no longer triggers a warning,
184       though the "experimental::postderef" warning category still exists (for
185       compatibility with code that disables it).
186
187       The 'postderef' feature was used in Perl 5.20 and Perl 5.22 to enable
188       postfix dereference syntax outside double-quotish interpolations. In
189       those versions, using it triggered the "experimental::postderef"
190       warning in the same way as the 'postderef_qq' feature did. As of Perl
191       5.24, this syntax is not only no longer experimental, but it is enabled
192       for all Perl code, regardless of what feature declarations are in
193       scope.
194
195   The 'signatures' feature
196       WARNING: This feature is still experimental and the implementation may
197       change in future versions of Perl.  For this reason, Perl will warn
198       when you use the feature, unless you have explicitly disabled the
199       warning:
200
201           no warnings "experimental::signatures";
202
203       This enables unpacking of subroutine arguments into lexical variables
204       by syntax such as
205
206           sub foo ($left, $right) {
207               return $left + $right;
208           }
209
210       See "Signatures" in perlsub for details.
211
212       This feature is available from Perl 5.20 onwards.
213
214   The 'refaliasing' feature
215       WARNING: This feature is still experimental and the implementation may
216       change in future versions of Perl.  For this reason, Perl will warn
217       when you use the feature, unless you have explicitly disabled the
218       warning:
219
220           no warnings "experimental::refaliasing";
221
222       This enables aliasing via assignment to references:
223
224           \$a = \$b; # $a and $b now point to the same scalar
225           \@a = \@b; #                     to the same array
226           \%a = \%b;
227           \&a = \&b;
228           foreach \%hash (@array_of_hash_refs) {
229               ...
230           }
231
232       See "Assigning to References" in perlref for details.
233
234       This feature is available from Perl 5.22 onwards.
235
236   The 'bitwise' feature
237       This makes the four standard bitwise operators ("& | ^ ~") treat their
238       operands consistently as numbers, and introduces four new dotted
239       operators ("&. |. ^. ~.") that treat their operands consistently as
240       strings.  The same applies to the assignment variants ("&= |= ^= &.=
241       |.= ^.=").
242
243       See "Bitwise String Operators" in perlop for details.
244
245       This feature is available from Perl 5.22 onwards.  Starting in Perl
246       5.28, "use v5.28" will enable the feature.  Before 5.28, it was still
247       experimental and would emit a warning in the "experimental::bitwise"
248       category.
249
250   The 'declared_refs' feature
251       WARNING: This feature is still experimental and the implementation may
252       change in future versions of Perl.  For this reason, Perl will warn
253       when you use the feature, unless you have explicitly disabled the
254       warning:
255
256           no warnings "experimental::declared_refs";
257
258       This allows a reference to a variable to be declared with "my",
259       "state", our "our", or localized with "local".  It is intended mainly
260       for use in conjunction with the "refaliasing" feature.  See "Declaring
261       a Reference to a Variable" in perlref for examples.
262
263       This feature is available from Perl 5.26 onwards.
264

FEATURE BUNDLES

266       It's possible to load multiple features together, using a feature
267       bundle.  The name of a feature bundle is prefixed with a colon, to
268       distinguish it from an actual feature.
269
270         use feature ":5.10";
271
272       The following feature bundles are available:
273
274         bundle    features included
275         --------- -----------------
276         :default  array_base
277
278         :5.10     say state switch array_base
279
280         :5.12     say state switch unicode_strings array_base
281
282         :5.14     say state switch unicode_strings array_base
283
284         :5.16     say state switch unicode_strings
285                   unicode_eval evalbytes current_sub fc
286
287         :5.18     say state switch unicode_strings
288                   unicode_eval evalbytes current_sub fc
289
290         :5.20     say state switch unicode_strings
291                   unicode_eval evalbytes current_sub fc
292
293         :5.22     say state switch unicode_strings
294                   unicode_eval evalbytes current_sub fc
295
296         :5.24     say state switch unicode_strings
297                   unicode_eval evalbytes current_sub fc
298                   postderef_qq
299
300         :5.26     say state switch unicode_strings
301                   unicode_eval evalbytes current_sub fc
302                   postderef_qq
303
304         :5.28     say state switch unicode_strings
305                   unicode_eval evalbytes current_sub fc
306                   postderef_qq bitwise
307
308       The ":default" bundle represents the feature set that is enabled before
309       any "use feature" or "no feature" declaration.
310
311       Specifying sub-versions such as the 0 in 5.14.0 in feature bundles has
312       no effect.  Feature bundles are guaranteed to be the same for all sub-
313       versions.
314
315         use feature ":5.14.0";    # same as ":5.14"
316         use feature ":5.14.1";    # same as ":5.14"
317

IMPLICIT LOADING

319       Instead of loading feature bundles by name, it is easier to let Perl do
320       implicit loading of a feature bundle for you.
321
322       There are two ways to load the "feature" pragma implicitly:
323
324       ·   By using the "-E" switch on the Perl command-line instead of "-e".
325           That will enable the feature bundle for that version of Perl in the
326           main compilation unit (that is, the one-liner that follows "-E").
327
328       ·   By explicitly requiring a minimum Perl version number for your
329           program, with the "use VERSION" construct.  That is,
330
331               use v5.10.0;
332
333           will do an implicit
334
335               no feature ':all';
336               use feature ':5.10';
337
338           and so on.  Note how the trailing sub-version is automatically
339           stripped from the version.
340
341           But to avoid portability warnings (see "use" in perlfunc), you may
342           prefer:
343
344               use 5.010;
345
346           with the same effect.
347
348           If the required version is older than Perl 5.10, the ":default"
349           feature bundle is automatically loaded instead.
350
351           Unlike "use feature ":5.12"", saying "use v5.12" (or any higher
352           version) also does the equivalent of "use strict"; see "use" in
353           perlfunc for details.
354
355
356
357perl v5.28.2                      2018-11-01                      feature(3pm)
Impressum