Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

how to import::into v5.020

by M4 (Novice)
on Nov 15, 2023 at 20:02 UTC ( [id://11155645]=perlquestion: print w/replies, xml ) Need Help??

M4 has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,

I have this module I use which imports things I always need. Now I can translate:

use strict; use warnings; use feature 'say';
to:
strict->import::into($caller); warnings->import::into($caller); feature->import::into($caller, 'say');
But how do I translate:
use v5.020;
?

Replies are listed 'Best First'.
Re: how to import::into v5.020
by Corion (Patriarch) on Nov 15, 2023 at 20:24 UTC

    Maybe feature does what you want?

    feature->import::into($caller, 'v5.020');
      Thanks!
      feature->import::into($caller, ':5.20.0');
      Does the trick!

        Not quite.

        use v5.20;

        is closer to

        BEGIN { require v5.20; } no feature qw( :all ); # `use v5.10;`+ use feature qw( :5.20 ); # `use v5.10;`+ use strict; # `use v5.12;`+ #use warnings; # `use v5.35;`+

        So you want

        require v5.20; feature->unimport::out_of( $caller, ':all' ); # `use v5.10;`+ feature->import::into( $caller, ':5.20' ); # `use v5.10;`+ strict->import::into( $caller ); # `use v5.12;`+ #warnings->import::into( $caller ); # `use v5.35;`+

        Turning off all features first is especially important with 5.35+ because use v5.35; and higher turn off features which are enabled by default. Specifically,

        • use v5.35; and higher turns off the indirect and multidimensional normally-enabled features, and
        • use v5.37; and higher turns off the bareword_filehandles normally-enabled feature
        $ perl -e'use v5.35; abc def;' Bareword found where operator expected (Do you need to predeclare "abc +"?) at -e line 1, near "abc def" syntax error at -e line 1, near "abc def" Execution of -e aborted due to compilation errors. $ perl -e'use feature qw( :5.35 ); abc def;' Can't locate object method "abc" via package "def" (perhaps you forgot + to load "def"?) at -e line 1. $ perl -e'no feature qw( :all ); use feature qw( :5.35 ); abc def;' Bareword found where operator expected (Do you need to predeclare "abc +"?) at -e line 1, near "abc def" syntax error at -e line 1, near "abc def" Execution of -e aborted due to compilation errors.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://11155645]
Approved by Paladin
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2024-04-14 12:00 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found