[Perl] Prototypes et signatures

Stéphane Gigandet biz at joueb.com
Mer 6 Juil 13:50:31 CEST 2022


Hello,

Suite à ce message, Sébastien Feugère (un grand merci à lui) a répondu 
en commentaire dans l'issue sur GitHub, et il nous a pointé vers 
Veure::Module.

On a donc activé les signatures, avec un module pour remplacer le 
Modern::Perl qu'on utilisait jusqu'alors pour le "boilerplate" :
https://github.com/openfoodfacts/openfoodfacts-server/pull/7009

package ProductOpener::PerlStandards;

use 5.24.0;
use strict;
use warnings;
use feature ();
use utf8;

sub import {
     warnings->import;
     warnings->unimport('experimental::signatures');
     strict->import;
     feature->import(qw/signatures :5.24/);
     utf8->import;
}

sub unimport {
     warnings->unimport;
     strict->unimport;
     feature->unimport;
     utf8->unimport;
}

1;

Bonne après midi,

Stéphane


Le 30/06/2022 à 10:08, Stéphane Gigandet a écrit :
> Bonjour,
>
> Dans le code d'Open Food Facts, on a pris l'habitude d'utiliser les 
> prototypes des fonctions pour indiquer le nombre de paramètres attendus.
>
> Du genre :
>
> sub ma_fonction($$) {
>
>     my $param1 = shift;
>
>     my $param2 = shift;
>
> ..
>
> }
>
> C'est pratique car si j'appelle ma_fonction("un seul paramètre"), j'ai 
> une erreur à la compilation.
>
> Mais il y a plein de posts qui expliquent quel les prototypes en Perl 
> c'est mal et qu'il ne faut pas les utiliser comme ça. En pratique 
> aucune de nos fonctions n'est appelée avec des listes en paramètres, 
> seulement des scalar / des ref.
>
> On se pose la question de changer ces prototypes : les garder, les 
> enlever, les remplacer par les signatures 
> https://perldoc.pl/perlsub#Signatures ?
>
> Le début de discussion est là : 
> https://github.com/openfoodfacts/openfoodfacts-server/issues/6956
>
> Je me demandais ce que vous faisiez dans vos projets ?
>
> Merci et bonne journée (sous la pluie ?),
>
> Stéphane
>
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
> Attention, les archives sont publiques




Plus d'informations sur la liste de diffusion Perl