İçeriğe atla
cd /languages
  • Betik mirası
  • Programlama
  • AST ve sembol desteği

Maguyva'da Perl: paket ve alt program grafları

Maguyva, Perl'ü AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları eski Perl kodunda paketleri, alt programları, use ve require içe aktarmalarını ve yapıcıları izleyebilir.

Perl mirası neden güvenle değiştirilmesi zor bir koddur

Perl kodu yoğun, esnek ve çoğu zaman yıllar önce ayrılmış kişilerce yazılmıştır. Sigil’ler bir adın anlamını değiştirir, paketler aynı zamanda sınıf işlevi görür ve aynı modül birçok dizindeki betikler tarafından yüklenir. Metin araması dizeleri bulur, ama ajana bir betiğin gerçekte hangi alt programı çağırdığını söylemez.

Maguyva ajana paketleri, alt programları, içe aktarmaları ve yapıcıları yapı olarak verir; böylece ajan koda dokunmadan önce bir değişikliğin kapsamını belirleyebilir.

Maguyva Perl’den neleri çıkarır

Maguyva .pl, .pm, .t, .pod ve .perl dosyalarını kapsar. Alt programlar fonksiyon, package bildirimleri sınıf olarak çıkarılır; sigil’ler ($, @, %, &, *) tanım adlarından kaldırılır, böylece değişkenler ve alt programlar yalın adlarıyla aranabilir.

İçe aktarmalar use, require ve package ifadelerinden gelir. Class->new biçimindeki yöntem çağrıları örnekleme sayılır; bless ve tie ise çağrı grafında bilinçli olarak tutulur. Graf ayrıca kalıtımı, geçersiz kılmaları, tür referanslarını, okuma ve yazmaları ve istisna tetiklemeyi kaydeder.

Repodaki kodun öne çıkması için yaklaşık 189 yerleşik fonksiyon (print, open, die, warn ve benzerleri) çağrı ilişkilerinden filtrelenir.

Örnek ajan istemleri

  • “Hangi betikler Billing::Invoice kullanıyor ve onun hangi alt programlarını çağırıyorlar?” (gelen yönde dependency_search)
  • “Report::Monthly nerede oluşturuluyor ve ->new sonrasında ne oluyor?” (find_symbol, ardından get_task_context)
  • “Auth::Session paketini sınayan tüm test dosyalarını bul.” (text_pattern_search, ardından find_symbol)

Bilinen sınırlar

  • Klasik Perl yöntemleri bir paket içindeki düz sub bildirimleridir; bu nedenle yapısal aramada yalnızca daha yeni, özel method sözdizimi yöntem olarak sınıflandırılır. Eski nesne yönelimli Perl için functions ön ayarını kullanın.
  • Filtrelenen yerleşik fonksiyonlara yapılan çağrılar graf kenarı olarak görünmez. Her open veya print çağrısına ihtiyacınız olduğunda text_pattern_search kullanın.

Sonraki adımlar

Hızlı başlangıç ile bir repo bağlayın, ardından destek matrisi için uyumluluk sayfasına bakın. Miras kod başka bir betik diline taşınıyorsa Python rehberi ile karşılaştırın.

En uygun kullanım

  • > Üretimde hâlâ çalışan Perl hizmetlerini, CGI uygulamalarını veya toplu iş ve rapor betiklerini devralmış ekipler.
  • > `.pm` paketlerinin birçok betik ve test dosyası tarafından paylaşıldığı modül tabanlı kod tabanları.
  • > İlk sorunun hangi betiklerin hangi modüllere bağlı olduğu olduğu taşıma veya devreden çıkarma işleri.

Ajan iş akışları

  • > Ortak bir paket değişmeden önce onu kullanan her betiği ve modülü listelemek.
  • > Bir sınıfın `->new` ile nerede oluşturulduğunu ve ardından hangi alt programları çağırdığını bulmak.
  • > Bir raporu veya işi, giriş betiğinden yüklediği modüller boyunca izlemek.

Motor ayrıntıları

  • > Perl desteği `.pl`, `.pm`, `.t`, `.pod` ve `.perl` dosyalarını kapsar. Alt programlar fonksiyon, `package` bildirimleri sınıftır.
  • > Sigil'ler tanım adlarından kaldırılır, `use` ve `require` içe aktarma olur ve `Class->new` örnekleme sayılır.
  • > `print`, `open` ve `die` gibi yaklaşık 189 yerleşik fonksiyon çağrılardan filtrelenir; `bless` ve `tie` grafta kalır.

Yararlı MCP giriş noktaları

  • find_symbol

    Bir paket veya alt program adıyla kullanın; sigil'ler kaldırıldığı için yalın adla arayın.

  • dependency_search

    Hangi betiklerin ve paketlerin ona bağlı olduğunu görmek için ortak bir modülde gelen yönde dolaşım kullanın.

  • text_pattern_search

    Çağrı grafının dışında kalan filtrelenmiş yerleşik fonksiyonlar, yapılandırma anahtarları ve SQL dizeleri için kullanın.