POD est un format de documentation intégré dans Perl, apparu historiquement avec l'extension du langage pour le soutien de grands projets. Sa principale différence : la documentation est toujours stockée directement dans le code source, ce qui aide à ne pas perdre le lien entre l'implémentation et la description (à ce jour, elle est en principe indissociable du développement de modules complexes en Perl).
Problème : souvent, les programmeurs soit ne connaissent pas, soit ignorent les systèmes de génération automatique de documentation, malgré le fait que l'écosystème Perl (CPAN) l'exige clairement pour tous les modules.
Solution — utiliser POD pour chaque fichier, classe et fonction. Pour l'automatisation, il existe des outils comme perldoc, pod2man, Pod::Coverage. Règle claire : si votre module n'a pas de POD — il n'est pas accepté dans l'environnement d'entreprise ou ne figure pas sur CPAN.
Exemple de code :
=head1 NAME My::Module - exemple d'utilisation de POD =head1 SYNOPSIS use My::Module; ... =head1 DESCRIPTION Cette fonction fait... =cut
Caractéristiques clés :
Le POD peut-il se trouver à l'intérieur d'une sous-programme, et pas seulement au début du fichier ?
Réponse : Oui, la spécification POD permet des insertions après n'importe quelle construction clé : après la déclaration de fonctions, méthodes, même à l'intérieur de blocs.
Que se passe-t-il si j'écris du code à l'intérieur d'un bloc POD ?
Réponse : Tout ce qui est entre =pod (ou un autre en-tête) et =cut est ignoré par l'interpréteur. Le code là-bas ne sera pas exécuté ! C'est une erreur fréquente.
Comment documenter des fonctions privées en POD ?
Réponse : Il est courant d'ajouter une section INTERNALS ou PRIVATE FUNCTIONS, ou de ne pas inclure cette documentation dans SYNOPSIS. Il n'est pas recommandé de cacher complètement la documentation, surtout si la bibliothèque est publique.
Le module est livré sans documentation. Les nouveaux développeurs doivent lire le code source, se débrouiller avec les paramètres magiques des fonctions.
Avantages :
Inconvénients :
Tout le code est accompagné de POD, un exemple d'utilisation est affiché dans la section SYNOPSIS, chaque fonction est décrite, avec des indications sur les limitations.
Avantages :
Inconvénients :