[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