Naar inhoud springen
cd /languages
  • Scriptlandschap
  • Programmeren
  • AST- en symboolondersteuning

Perl in Maguyva: pakket- en subroutinegrafen

Maguyva ondersteunt Perl met AST, symbolen en graaf, zodat AI-agents pakketten, subroutines, use- en require-imports en constructors in legacy-Perl volgen.

Waarom Perl-landschappen lastig veilig te wijzigen zijn

Perl-code is compact, flexibel en vaak geschreven door mensen die jaren geleden zijn vertrokken. Sigils veranderen de betekenis van een naam, pakketten doen ook dienst als klassen, en dezelfde module wordt geladen door scripts in veel mappen. Tekstzoeken vindt de strings, maar vertelt een agent niet welke subroutine een script echt aanroept.

Maguyva geeft de agent pakketten, subroutines, imports en constructors als structuur, zodat hij een wijziging kan afbakenen voordat hij de code aanraakt.

Wat Maguyva in Perl extraheert

Maguyva dekt .pl, .pm, .t, .pod en .perl. Subroutines worden als functies geëxtraheerd en package-declaraties als klassen, en bij definitienamen worden de sigils ($, @, %, &, *) verwijderd, zodat variabelen en subroutines op hun kale naam doorzoekbaar zijn.

Imports komen uit use-, require- en package-statements. Methodeaanroepen in de vorm Class->new tellen als instantiëring, en bless en tie blijven bewust in de aanroepgraaf. De graaf legt ook overerving, overrides, typeverwijzingen, lees- en schrijfacties en opgeworpen exceptions vast.

Ongeveer 189 ingebouwde functies (print, open, die, warn en vergelijkbare) worden uit de aanroeprelaties gefilterd, zodat de code van de repository opvalt.

Voorbeeldprompts voor agents

  • “Welke scripts gebruiken Billing::Invoice, en welke van zijn subroutines roepen ze aan?” (dependency_search incoming)
  • “Waar wordt Report::Monthly aangemaakt, en wat gebeurt er na ->new?” (find_symbol, daarna get_task_context)
  • “Zoek elk testbestand dat Auth::Session test.” (text_pattern_search, daarna find_symbol)

Bekende beperkingen

  • Klassieke Perl-methoden zijn gewone sub-declaraties binnen een pakket, dus in structureel zoeken wordt alleen de nieuwere, specifieke method-syntaxis als methode ingedeeld. Gebruik voor oudere objectgeoriënteerde Perl de preset functions.
  • Aanroepen van gefilterde ingebouwde functies verschijnen niet als randen in de graaf. Gebruik text_pattern_search wanneer je elke aanroep van open of print nodig hebt.

Volgende stappen

Koppel een repository via de snelstart en bekijk daarna de ondersteuningsmatrix op de compatibiliteitspagina. Als het landschap naar een andere scripttaal verhuist, vergelijk dan met de Python-gids.

Beste toepassing

  • > Teams die Perl-services, CGI-applicaties of batch- en rapportagescripts hebben geërfd die nog in productie draaien.
  • > Modulezware codebases waarin `.pm`-pakketten door veel scripts en testbestanden worden gedeeld.
  • > Migratie- of uitfaseringswerk waarbij de eerste vraag is welke scripts van welke modules afhangen.

Agentworkflows

  • > Elk script en elke module opsommen die een gedeeld pakket gebruikt voordat het verandert.
  • > Vinden waar een klasse met `->new` wordt aangemaakt en welke subroutines daarna worden aangeroepen.
  • > Een rapport of job volgen vanaf het startscript door de modules die het laadt.

Enginedetails

  • > Perl-ondersteuning dekt `.pl`, `.pm`, `.t`, `.pod` en `.perl`. Subroutines zijn functies en `package`-declaraties zijn klassen.
  • > Sigils worden uit definitienamen verwijderd, `use` en `require` worden imports, en `Class->new` telt als instantiëring.
  • > Ongeveer 189 ingebouwde functies zoals `print`, `open` en `die` worden uit aanroepen gefilterd, terwijl `bless` en `tie` in de graaf blijven.

Nuttige MCP-instappunten

  • find_symbol

    Gebruik het voor een pakket- of subroutinenaam; sigils worden verwijderd, dus zoek op de kale naam.

  • dependency_search

    Gebruik incoming-traversal op een gedeelde module om te zien welke scripts en pakketten ervan afhangen.

  • text_pattern_search

    Gebruik het voor gefilterde ingebouwde functies, configuratiesleutels en SQL-strings die de aanroepgraaf weglaat.