http://qs321.pair.com?node_id=1210952


in reply to Which pragmas are activated with a specific perl version?

Other monks have pointed you at the feature documentation, but I'd like to expand on Anonymous monk's suggestion that you leave use strict; in your scripts even if it is automatically enabled by use 5.012;.

If you rely on use VERSION; and someone comes along later and modifies the code to run on an older perl version, they will remove or modify the use VERSION which may change the pragmas you are running under, and not all of them will immediately cause errors (losing say would be immediately obvious, but losing strict or unicode_eval would be more subtle).

Since strict is always relevant, I still include use strict; regardless of version. I consider a comment sufficient for other non-keyword features that I actuall make use of in the code. For example:

use strict; use warnings; use 5.016; # for unicode_eval and lvalue substr

Good Day,
    Dean

Replies are listed 'Best First'.
Re^2: Which pragmas are activated with a specific perl version?
by adhrain (Sexton) on Mar 15, 2018 at 13:57 UTC

    I always enable the pragmas explicitly like this (in my nice template for Module::Starter::PBP):

    use 5.014; use strict; use warnings; use utf8; use Carp; ...

    My question was different: I wish to know if there is a table that maps each version with the pragmas it loads automatically.

    I knew about perldoc feature and my question is directly inspired by the table on that doc page's "FEATURE BUNDLES" section.

    The following feature bundles are available: bundle features included --------- ----------------- :default array_base :5.10 say state switch array_base :5.12 say state switch unicode_strings array_base :5.14 say state switch unicode_strings array_base :5.16 say state switch unicode_strings unicode_eval evalbytes current_sub fc :5.18 say state switch unicode_strings unicode_eval evalbytes current_sub fc ...