Przejdź do treści
cd /languages
  • Zasoby skryptów
  • Programowanie
  • Obsługa AST i symboli

Perl w Maguyva: grafy pakietów i podprogramów

Maguyva obsługuje Perla przez AST, symbole i graf, dzięki czemu agenci AI śledzą pakiety, podprogramy, importy use i require oraz konstruktory w starszym Perlu.

Dlaczego zasoby w Perlu trudno bezpiecznie zmieniać

Kod w Perlu jest zwięzły, elastyczny i często napisany przez ludzi, którzy odeszli lata temu. Sigile zmieniają znaczenie nazwy, pakiety pełnią też rolę klas, a ten sam moduł jest ładowany przez skrypty w wielu katalogach. Wyszukiwanie tekstowe znajduje ciągi znaków, ale nie mówi agentowi, który podprogram skrypt faktycznie wywołuje.

Maguyva daje agentowi pakiety, podprogramy, importy i konstruktory jako strukturę, aby mógł określić zakres zmiany przed dotknięciem kodu.

Co Maguyva wyodrębnia w Perlu

Maguyva obejmuje .pl, .pm, .t, .pod i .perl. Podprogramy są wyodrębniane jako funkcje, a deklaracje package jako klasy; z nazw definicji usuwane są sigile ($, @, %, &, *), więc zmienne i podprogramy można wyszukiwać po samej nazwie.

Importy pochodzą z instrukcji use, require i package. Wywołania metod w formie Class->new liczą się jako tworzenie instancji, a bless i tie są celowo zachowywane w grafie wywołań. Graf zapisuje też dziedziczenie, nadpisania, odwołania do typów, odczyty i zapisy oraz zgłaszanie wyjątków.

Około 189 funkcji wbudowanych (print, open, die, warn i podobne) jest filtrowanych z relacji wywołań, aby wyróżnić kod repozytorium.

Przykładowe prompty dla agentów

  • „Które skrypty używają Billing::Invoice i które z jego podprogramów wywołują?” (dependency_search incoming)
  • „Gdzie tworzony jest Report::Monthly i co dzieje się po ->new?” (find_symbol, potem get_task_context)
  • „Znajdź wszystkie pliki testowe, które sprawdzają Auth::Session.” (text_pattern_search, potem find_symbol)

Znane ograniczenia

  • Klasyczne metody w Perlu to zwykłe deklaracje sub wewnątrz pakietu, więc w wyszukiwaniu strukturalnym jako metoda klasyfikowana jest tylko nowsza, dedykowana składnia method. Dla starszego obiektowego Perla użyj presetu functions.
  • Wywołania odfiltrowanych funkcji wbudowanych nie pojawiają się jako krawędzie grafu. Gdy potrzebujesz każdego wywołania open lub print, użyj text_pattern_search.

Kolejne kroki

Podłącz repozytorium za pomocą szybkiego startu, a potem sprawdź macierz obsługi na stronie zgodności. Jeśli zasoby przechodzą na inny język skryptowy, porównaj z przewodnikiem po języku Python.

Najlepsze dopasowanie

  • > Zespoły, które odziedziczyły usługi w Perlu, aplikacje CGI albo skrypty wsadowe i raportowe wciąż działające na produkcji.
  • > Bazy kodu oparte na modułach, w których pakiety `.pm` są współdzielone przez wiele skryptów i plików testowych.
  • > Prace migracyjne lub wygaszające, w których pierwsze pytanie brzmi: które skrypty zależą od których modułów.

Workflow agentów

  • > Wypisać wszystkie skrypty i moduły używające współdzielonego pakietu przed jego zmianą.
  • > Znaleźć miejsce, w którym klasa jest tworzona przez `->new`, i podprogramy wywoływane potem.
  • > Prześledzić raport lub zadanie od skryptu wejściowego przez ładowane moduły.

Szczegóły silnika

  • > Obsługa Perla obejmuje `.pl`, `.pm`, `.t`, `.pod` i `.perl`. Podprogramy są funkcjami, a deklaracje `package` klasami.
  • > Sigile są usuwane z nazw definicji, `use` i `require` stają się importami, a `Class->new` liczy się jako tworzenie instancji.
  • > Około 189 funkcji wbudowanych, takich jak `print`, `open` i `die`, jest filtrowanych z wywołań, natomiast `bless` i `tie` pozostają w grafie.

Przydatne punkty wejścia MCP

  • find_symbol

    Używaj go z nazwą pakietu lub podprogramu; sigile są usuwane, więc szukaj po samej nazwie.

  • dependency_search

    Użyj przejścia incoming na współdzielonym module, aby zobaczyć, które skrypty i pakiety od niego zależą.

  • text_pattern_search

    Używaj go do odfiltrowanych funkcji wbudowanych, kluczy konfiguracji i ciągów SQL, których graf wywołań nie obejmuje.