Lompat ke konten
cd /languages
  • Warisan skrip
  • Pemrograman
  • Dukungan AST dan simbol

Perl di Maguyva: graf paket dan subrutin

Maguyva mendukung Perl dengan AST, simbol, dan graf, sehingga agen AI dapat menelusuri paket, subrutin, impor use dan require, serta konstruktor dalam Perl lama.

Mengapa warisan Perl sulit diubah dengan aman

Kode Perl padat, fleksibel, dan sering ditulis oleh orang yang sudah pergi bertahun-tahun lalu. Sigil mengubah makna sebuah nama, paket juga berfungsi sebagai kelas, dan modul yang sama dimuat oleh skrip di banyak direktori. Pencarian teks menemukan string, tetapi tidak memberi tahu agen subrutin mana yang benar-benar dipanggil sebuah skrip.

Maguyva memberi agen paket, subrutin, impor, dan konstruktor sebagai struktur, sehingga ia dapat membatasi cakupan perubahan sebelum menyentuh kode.

Apa yang diekstrak Maguyva dari Perl

Maguyva mencakup .pl, .pm, .t, .pod, dan .perl. Subrutin diekstrak sebagai fungsi dan deklarasi package sebagai kelas, dengan sigil ($, @, %, &, *) dibuang dari nama definisi, sehingga variabel dan subrutin dapat dicari dengan nama polosnya.

Impor berasal dari pernyataan use, require, dan package. Panggilan metode berbentuk Class->new dihitung sebagai instansiasi, sedangkan bless dan tie sengaja dipertahankan dalam graf panggilan. Graf juga mencatat pewarisan, override, referensi tipe, pembacaan dan penulisan, serta pemunculan eksepsi.

Sekitar 189 fungsi bawaan (print, open, die, warn, dan sejenisnya) difilter dari relasi panggilan, agar kode repositori menonjol.

Contoh prompt agen

  • “Skrip mana yang menggunakan Billing::Invoice, dan subrutin mana yang mereka panggil?” (dependency_search arah masuk)
  • “Di mana Report::Monthly dibuat, dan apa yang terjadi setelah ->new?” (find_symbol, lalu get_task_context)
  • “Temukan semua berkas uji yang menguji Auth::Session.” (text_pattern_search, lalu find_symbol)

Batasan yang diketahui

  • Metode Perl klasik hanyalah deklarasi sub biasa di dalam paket, sehingga dalam pencarian struktural hanya sintaks method khusus yang lebih baru yang diklasifikasikan sebagai metode. Gunakan preset functions untuk Perl berorientasi objek yang lebih lama.
  • Panggilan ke fungsi bawaan yang difilter tidak muncul sebagai edge graf. Gunakan text_pattern_search saat Anda membutuhkan setiap panggilan open atau print.

Langkah berikutnya

Hubungkan repositori dengan panduan memulai cepat, lalu periksa matriks dukungan di halaman kompatibilitas. Jika warisan ini akan dipindahkan ke bahasa skrip lain, bandingkan dengan panduan Python.

Paling cocok untuk

  • > Tim yang mewarisi layanan Perl, aplikasi CGI, atau skrip batch dan laporan yang masih berjalan di produksi.
  • > Basis kode berbasis modul, tempat paket `.pm` dipakai bersama oleh banyak skrip dan berkas uji.
  • > Pekerjaan migrasi atau penghentian, dengan pertanyaan pertama: skrip mana yang bergantung pada modul mana.

Workflow agent

  • > Mendaftar setiap skrip dan modul yang menggunakan paket bersama sebelum paket itu berubah.
  • > Menemukan tempat sebuah kelas dibuat dengan `->new` dan subrutin yang dipanggilnya kemudian.
  • > Menelusuri sebuah laporan atau job dari skrip awal melalui modul yang dimuatnya.

Detail engine

  • > Dukungan Perl mencakup `.pl`, `.pm`, `.t`, `.pod`, dan `.perl`. Subrutin adalah fungsi, dan deklarasi `package` adalah kelas.
  • > Sigil dibuang dari nama definisi, `use` dan `require` menjadi impor, dan `Class->new` dihitung sebagai instansiasi.
  • > Sekitar 189 fungsi bawaan seperti `print`, `open`, dan `die` difilter dari panggilan, sedangkan `bless` dan `tie` tetap ada di graf.

Titik masuk MCP yang berguna

  • find_symbol

    Gunakan dengan nama paket atau subrutin; sigil sudah dibuang, jadi carilah dengan nama polos.

  • dependency_search

    Gunakan penelusuran arah masuk pada modul bersama untuk melihat skrip dan paket mana yang bergantung padanya.

  • text_pattern_search

    Gunakan untuk fungsi bawaan yang difilter, kunci konfigurasi, dan string SQL yang berada di luar graf panggilan.