Passer au contenu
cd /languages
  • Parcs de scripts
  • Programmation
  • Prise en charge de l’AST et des symboles

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

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.

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, puis consultez la matrice de prise en charge sur la page de compatibilité. Si le parc migre vers un autre langage de script, comparez avec le guide Python.

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.

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é.