in reply to Re^2: Passing on "use"s
in thread Passing on "use"s

Why the explicit 'use strict' when you're already loading 'v5.36' ?

Having both allows to later change your mind and support older Perl versions (perhaps because someone paid for that). Removing use v5.36 would implicitly disable strict otherwise.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

Replies are listed 'Best First'.
Re^4: Passing on "use"s
by kcott (Archbishop) on Nov 03, 2023 at 23:00 UTC

    G'day Alexander,

    "Having both allows to later change your mind and support older Perl versions ... Removing use v5.36 would implicitly disable strict otherwise."

    In the dim, distant past I made a similar comment regarding code I'd posted which included some equivalent redundancy (although I don't recall details now); on that basis, I've upvoted your post. However, I changed my thinking on that and, accordingly, would argue against what you have here.

    I'll just talk about this generally as a number of related scenarios apply; for example, removing any use VERSION statement, changing to various earlier VERSIONs, changing to a VERSION earlier than 5.12, and so on. These comments would also apply, to a certain degree, when starting with a VERSION later than 5.36.

    See "perl5360delta: use v5.36" for the features enabled by that VERSION.

    Here's just some of the things you'd have to deal with:

    • strict is enabled for all versions since (and including) 5.12; so you wouldn't necessarily lose that.
    • warnings was first enabled in 5.36; so you would definitely lose that.
    • signatures were introduced in 5.20, so you might lose that and need to rewrite "sub find_pm($workDir) {...}" in the code presented (and potentially rewrite similar code elsewhere).
    • signatures were experimental prior to 5.36. Local policy may mean not using them or including use experimental signatures (or similar).
    • builtin was introduced in 5.36; so you would definitely lose that and need to rewrite any code using it.

    Having to remember to explicitly "use strict;" may not be necessary and, even it was, it pales into insignificance against all of the other things you'd have to remember to do.

    — Ken