# Perl dans Maguyva : graphes de paquetages et de sous-routines

Canonical source: https://maguyva.ai/fr/languages/perl

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva prend en charge Perl avec AST, symboles et graphe, pour que les agents IA suivent paquetages, sous-routines, imports use et require et constructeurs en Perl historique.

## Aperçu du support

- Palier: Prise en charge de l’AST et des symboles
- Programmation
- Extensions: .perl, .pl, .pm, .pod, .t
- Analyse AST réelle pour une recherche consciente de la syntaxe et un contexte structurel.
- Les symboles nommés alimentent la recherche sémantique et le référencement croisé. La navigation par graphe est disponible lorsque l’extraction de relations est activée.
- Ce langage fournit des symboles et des relations à la recherche tenant compte du graphe ; les types d’arêtes pris en charge varient selon ses constructions natives.
- L’analyse AST et l’extraction de symboles sont toutes deux disponibles.

## Idéal pour

- Les équipes qui ont hérité de services Perl, d'applications CGI ou de scripts batch et de reporting encore en production.
- Les bases de code orientées modules où des paquetages `.pm` sont partagés par de nombreux scripts et fichiers de test.
- Les projets de migration ou de décommissionnement où la première question est : quels scripts dépendent de quels modules ?

## Workflows d'agent

- Lister tous les scripts et modules qui utilisent un paquetage partagé avant de le modifier.
- Trouver où une classe est construite avec `->new` et quelles sous-routines elle appelle ensuite.
- Suivre un rapport ou un job depuis son script d'entrée à travers les modules qu'il charge.

## Pourquoi un parc Perl est difficile à modifier sans risque

Le code Perl est dense, souple et souvent écrit par des personnes parties depuis des années. Les sigils changent le sens d'un nom, les paquetages font office de classes, et le même module est chargé par des scripts répartis dans de nombreux répertoires. Une recherche textuelle trouve les chaînes, mais ne dit pas à un agent quelle sous-routine un script appelle réellement.

Maguyva donne à l'agent paquetages, sous-routines, imports et constructeurs sous forme de structure, pour qu'il circonscrive un changement avant de toucher au code.

## Ce que Maguyva extrait en Perl

Maguyva couvre `.pl`, `.pm`, `.t`, `.pod` et `.perl`. Les sous-routines sont extraites comme fonctions et les déclarations `package` comme classes ; les sigils (`$`, `@`, `%`, `&`, `*`) sont retirés des noms de définition, de sorte que variables et sous-routines se retrouvent par leur nom nu.

Les imports proviennent des instructions `use`, `require` et `package`. Les appels de méthode de la forme `Class->new` comptent comme instanciation, et `bless` et `tie` sont conservés volontairement dans le graphe d'appels. Le graphe enregistre aussi l'héritage, les surcharges, les références de type, les lectures et écritures, et les levées d'exceptions.

Environ 189 fonctions intégrées (`print`, `open`, `die`, `warn` et similaires) sont filtrées des relations d'appel pour faire ressortir le code du dépôt.

## Exemples de prompts pour agents

- « Quels scripts utilisent `Billing::Invoice`, et lesquelles de ses sous-routines appellent-ils ? » (`dependency_search` en incoming)
- « Où `Report::Monthly` est-il construit, et que se passe-t-il après `->new` ? » (`find_symbol`, puis `get_task_context`)
- « Trouve tous les fichiers de test qui exercent `Auth::Session`. » (`text_pattern_search`, puis `find_symbol`)

## Limites connues

- Les méthodes Perl classiques sont de simples déclarations `sub` dans un paquetage ; seule la syntaxe dédiée plus récente `method` est donc classée comme méthode dans la recherche structurelle. Utilisez le préréglage `functions` pour le Perl orienté objet plus ancien.
- Les appels aux fonctions intégrées filtrées n'apparaissent pas comme arêtes du graphe. Utilisez `text_pattern_search` quand il vous faut chaque appel à `open` ou `print`.

## Étapes suivantes

Connectez un dépôt avec le [démarrage rapide](/fr/docs/quickstart), puis consultez la matrice de prise en charge sur la [page de compatibilité](/fr/docs/compatibility). Si le parc migre vers un autre langage de script, comparez avec le [guide Python](/fr/languages/python).

## Détails du moteur

- La prise en charge de Perl couvre `.pl`, `.pm`, `.t`, `.pod` et `.perl`. Les sous-routines sont des fonctions et les déclarations `package` des classes.
- Les sigils sont retirés des noms de définition, `use` et `require` deviennent des imports, et `Class->new` compte comme instanciation.
- Environ 189 fonctions intégrées comme `print`, `open` et `die` sont filtrées des appels, tandis que `bless` et `tie` restent dans le graphe.

## Points d'entrée MCP utiles

- `find_symbol`: Utilisez-le pour un nom de paquetage ou de sous-routine ; les sigils sont retirés, cherchez donc le nom nu.
- `dependency_search`: Utilisez la traversée incoming sur un module partagé pour voir quels scripts et paquetages en dépendent.
- `text_pattern_search`: Utilisez-le pour les fonctions intégrées filtrées, les clés de configuration et les chaînes SQL que le graphe d'appels laisse de côté.
