Přeskočit na obsah
cd /languages
  • Skriptové dědictví
  • Programování
  • Podpora AST a symbolů

Perl v Maguyva: grafy balíčků a podprogramů

Maguyva podporuje Perl s AST, symboly a grafem, takže AI agenti sledují balíčky, podprogramy, importy use a require a konstruktory ve starším Perlu.

Proč se perlové dědictví těžko bezpečně mění

Kód v Perlu je hutný, pružný a často ho psali lidé, kteří odešli před lety. Sigily mění význam názvu, balíčky slouží zároveň jako třídy a tentýž modul načítají skripty z mnoha adresářů. Textové vyhledávání najde řetězce, ale agentovi neřekne, který podprogram skript skutečně volá.

Maguyva dá agentovi balíčky, podprogramy, importy a konstruktory jako strukturu, aby mohl změnu ohraničit dřív, než sáhne do kódu.

Co Maguyva v Perlu extrahuje

Maguyva pokrývá .pl, .pm, .t, .pod a .perl. Podprogramy se extrahují jako funkce a deklarace package jako třídy; z názvů definic se odstraňují sigily ($, @, %, &, *), takže proměnné i podprogramy lze vyhledat podle holého názvu.

Importy vznikají z příkazů use, require a package. Volání metod ve tvaru Class->new se počítají jako vytvoření instance a bless a tie zůstávají v grafu volání záměrně. Graf zaznamenává také dědičnost, přepisy, odkazy na typy, čtení a zápisy a vyvolání výjimek.

Přibližně 189 vestavěných funkcí (print, open, die, warn a podobné) se z vazeb volání odfiltruje, aby vynikl kód repozitáře.

Ukázkové prompty pro agenty

  • „Které skripty používají Billing::Invoice a které jeho podprogramy volají?“ (dependency_search incoming)
  • „Kde se vytváří Report::Monthly a co se stane po ->new?“ (find_symbol, pak get_task_context)
  • „Najdi všechny testovací soubory, které prověřují Auth::Session.“ (text_pattern_search, pak find_symbol)

Známá omezení

  • Klasické metody v Perlu jsou běžné deklarace sub uvnitř balíčku, takže ve strukturním vyhledávání se jako metoda klasifikuje jen novější vyhrazená syntaxe method. Pro starší objektově orientovaný Perl použijte preset functions.
  • Volání odfiltrovaných vestavěných funkcí se v grafu neobjeví jako hrany. Když potřebujete každé volání open nebo print, použijte text_pattern_search.

Další kroky

Připojte repozitář podle rychlého startu a pak si prohlédněte matici podpory na stránce kompatibility. Pokud se dědictví stěhuje do jiného skriptovacího jazyka, porovnejte s průvodcem jazykem Python.

Nejlépe se hodí pro

  • > Týmy, které zdědily služby v Perlu, aplikace CGI nebo dávkové a reportovací skripty, jež stále běží v produkci.
  • > Kódové základny postavené na modulech, kde balíčky `.pm` sdílí mnoho skriptů a testovacích souborů.
  • > Migrace nebo vyřazování z provozu, kde první otázka zní, které skripty závisejí na kterých modulech.

Workflow agentů

  • > Vypsat všechny skripty a moduly, které používají sdílený balíček, než se změní.
  • > Najít, kde se třída vytváří přes `->new` a které podprogramy pak volá.
  • > Sledovat report nebo úlohu od vstupního skriptu přes moduly, které načítá.

Podrobnosti enginu

  • > Podpora Perlu pokrývá `.pl`, `.pm`, `.t`, `.pod` a `.perl`. Podprogramy jsou funkce a deklarace `package` jsou třídy.
  • > Z názvů definic se odstraňují sigily, `use` a `require` se stávají importy a `Class->new` se počítá jako vytvoření instance.
  • > Přibližně 189 vestavěných funkcí, jako `print`, `open` a `die`, se z volání odfiltruje, zatímco `bless` a `tie` v grafu zůstávají.

Užitečné vstupní body MCP

  • find_symbol

    Použijte s názvem balíčku nebo podprogramu; sigily se odstraňují, takže hledejte podle holého názvu.

  • dependency_search

    Použijte procházení incoming na sdíleném modulu a uvidíte, které skripty a balíčky na něm závisejí.

  • text_pattern_search

    Použijte pro odfiltrované vestavěné funkce, konfigurační klíče a řetězce SQL, které graf volání vynechává.