# Perl in Maguyva: pakket- en subroutinegrafen

Canonical source: https://maguyva.ai/nl/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 ondersteunt Perl met AST, symbolen en graaf, zodat AI-agents pakketten, subroutines, use- en require-imports en constructors in legacy-Perl volgen.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .perl, .pl, .pm, .pod, .t
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

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

## 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](/nl/docs/quickstart) en bekijk daarna de ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Als het landschap naar een andere scripttaal verhuist, vergelijk dan met de [Python-gids](/nl/languages/python).

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