develooper Front page | perl.perl5.porters | Postings from January 2022

Re: Pre-RFC: Policies

Thread Previous | Thread Next
From:
Dan Book
Date:
January 27, 2022 19:50
Subject:
Re: Pre-RFC: Policies
Message ID:
CABMkAVUaL=XZ3-ZhDB2=PHpvqzqHOCi7_ABr2LDz3LorYhLQ=w@mail.gmail.com
On Thu, Jan 27, 2022 at 1:24 PM Ovid via perl5-porters <
perl5-porters@perl.org> wrote:

> I want to make it easier to reduce boilerplate.
>
> One of my clients had a rule that every Perl module has a standard set of
> boilerplate at the top of every Perl package/script. I changed that to:
>
>     use Client::Policy;
>
> That made life much easier. I do this a lot for clients and I don't want
> to keep doing that. However, there were fiddly bits in writing that module.
> I'd rather write this:
>
>     use feature 'policy';
>     policy;
>
> And that reads a .perlpolicy file and automatically injects its contents
> into the current code.
>
> So if .perlpolicy contains this:
>
>     use v5.26;
>     use warnings;
>     use feature "signatures';
>     no warnings 'experimental::signatures';
>     use Carp qw(carp croak);
>
> You don't have to write that every time.
>
> However, we need to consider how the .perlpolicy file is located, and
> handling the case where you might want different policies for different
> parts of your code. For example, for Tau Station, we have `Veure::Module`,
> `Veure::Moose`, and `Veure::Script` depending on our needs. Or if you
> update Perl, maybe have incremental policies based on the version of Perl?
>
>     policy; # default
>     policy 'script';
>     policy 'Moose';
>
> This solves a common problem, but I have not yet thought out all of the
> implications, so I'd love feedback.
>

The CPAN modules https://metacpan.org/pod/Import::Base and
https://metacpan.org/pod/App::MyPerl are existing solutions for this.

-Dan

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About