Перейти до вмісту
cd /languages
  • Спадщина скриптів
  • Програмування
  • Підтримка AST і символів

Perl у Maguyva: графи пакетів і підпрограм

Maguyva підтримує Perl з AST, символами та графом, щоб ШІ-агенти відстежували пакети, підпрограми, імпорти use і require та конструктори в успадкованому Perl.

Чому спадщину на Perl важко безпечно змінювати

Код на Perl щільний, гнучкий і часто написаний людьми, які пішли багато років тому. Сигіли змінюють значення назви, пакети водночас слугують класами, а той самий модуль завантажують скрипти з багатьох каталогів. Текстовий пошук знаходить рядки, але не каже агентові, яку підпрограму скрипт викликає насправді.

Maguyva дає агентові пакети, підпрограми, імпорти й конструктори як структуру, щоб він окреслив межі зміни, перш ніж торкатися коду.

Що Maguyva витягує з Perl

Maguyva охоплює .pl, .pm, .t, .pod і .perl. Підпрограми витягуються як функції, оголошення package — як класи, а з назв визначень вилучаються сигіли ($, @, %, &, *), тож змінні й підпрограми шукаються за голою назвою.

Імпорти будуються з операторів use, require і package. Виклики методів виду Class->new вважаються створенням екземплярів, а bless і tie навмисно лишаються в графі викликів. Граф також фіксує успадкування, перевизначення, посилання на типи, читання й записи, а також збудження винятків.

Близько 189 вбудованих функцій (print, open, die, warn тощо) відфільтровуються зі зв’язків викликів, щоб код репозиторію було видно.

Приклади промптів для агентів

  • «Які скрипти використовують Billing::Invoice і які його підпрограми викликають?» (dependency_search incoming)
  • «Де створюється Report::Monthly і що відбувається після ->new?» (find_symbol, потім get_task_context)
  • «Знайди всі тестові файли, що перевіряють Auth::Session.» (text_pattern_search, потім find_symbol)

Відомі обмеження

  • Класичні методи Perl — це звичайні оголошення sub всередині пакета, тому в структурному пошуку методом вважається лише новий спеціальний синтаксис method. Для старого об’єктно-орієнтованого Perl використовуйте пресет functions.
  • Виклики відфільтрованих вбудованих функцій не з’являються як ребра графа. Якщо потрібен кожен виклик open чи print, використовуйте text_pattern_search.

Наступні кроки

Під’єднайте репозиторій за швидким стартом, потім перегляньте матрицю підтримки на сторінці сумісності. Якщо спадщина переїжджає на іншу скриптову мову, порівняйте з посібником із мови Python.

Найкраще підходить

  • > Команди, яким дісталися сервіси на Perl, CGI-застосунки або пакетні й звітні скрипти, що досі працюють у продакшені.
  • > Кодові бази з акцентом на модулі, де пакети `.pm` використовують багато скриптів і тестових файлів.
  • > Міграція або виведення з експлуатації, де перше питання — які скрипти залежать від яких модулів.

Робочі процеси агента

  • > Перелічити всі скрипти й модулі, що використовують спільний пакет, перш ніж його змінювати.
  • > Знайти, де клас створюється через `->new` і які підпрограми викликаються далі.
  • > Простежити звіт чи завдання від стартового скрипта крізь модулі, які він завантажує.

Деталі рушія

  • > Підтримка Perl охоплює `.pl`, `.pm`, `.t`, `.pod` і `.perl`. Підпрограми є функціями, а оголошення `package` — класами.
  • > З назв визначень вилучаються сигіли, `use` і `require` стають імпортами, а `Class->new` вважається створенням екземпляра.
  • > Близько 189 вбудованих функцій, як-от `print`, `open` і `die`, відфільтровуються з викликів, а `bless` і `tie` лишаються в графі.

Корисні точки входу MCP

  • find_symbol

    Використовуйте з назвою пакета чи підпрограми; сигіли вилучаються, тож шукайте за голою назвою.

  • dependency_search

    Використовуйте обхід incoming для спільного модуля, щоб побачити, які скрипти й пакети від нього залежать.

  • text_pattern_search

    Використовуйте для відфільтрованих вбудованих функцій, ключів конфігурації та SQL-рядків, яких граф викликів не охоплює.