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

Re: Pre-RFC: Policies

Thread Previous
From:
Leon Timmermans
Date:
January 27, 2022 19:48
Subject:
Re: Pre-RFC: Policies
Message ID:
CAHhgV8jo5sRyW0kUSpaOwRJzw4Y_+XobN4Mc8Ab2P8WXqdQUeg@mail.gmail.com
On Thu, Jan 27, 2022 at 7: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.
>

IMNSHO, that is a terrible idea. That means that the same code will run on
one machine but not the other because they have different .perlpolicy
files. And it won't be obvious at all why it's different. That is extremely
confusing. Policy modules can be useful, but they really need to be named
because otherwise you can't keep everyone in sync and that leads to chaos.

Also, this is the sort of thing that can easily be prototyped on CPAN, and
as such that should be done first.

Leon

Thread Previous


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