# Maguyva'da Perl: paket ve alt program grafları

Canonical source: https://maguyva.ai/tr/languages/perl

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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.

## Destek anlık görüntüsü

- Katman: AST ve sembol desteği
- Programlama
- Uzantılar: .perl, .pl, .pm, .pod, .t
- Sözdizimi farkında arama ve yapısal bağlam için gerçek AST ayrıştırması.
- Adlandırılmış semboller anlamsal aramayı ve çapraz referansı besler. İlişki çıkarımı etkinleştirildiğinde graf gezinmesi kullanılabilir.
- Bu dil, graf farkındalıklı aramaya semboller ve ilişkiler sağlar; desteklenen kenar türleri dilin yerel yapılarına göre değişir.
- Hem AST ayrıştırma hem de sembol çıkarma kullanılabilir.

## 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.

## 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ıç](/tr/docs/quickstart) ile bir repo bağlayın, ardından destek matrisi için [uyumluluk sayfasına](/tr/docs/compatibility) bakın. Miras kod başka bir betik diline taşınıyorsa [Python rehberi](/tr/languages/python) ile karşılaştırın.

## 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.
