Lumaktaw papunta sa content
cd /languages
  • Pamana ng scripting
  • Programming
  • Support para sa AST at mga simbolo

Perl sa Maguyva: mga package at subroutine graph

Sinusuportahan ng Maguyva ang Perl gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga package, subroutine, use at require na import, at mga constructor sa legacy na Perl.

Bakit mahirap baguhin nang ligtas ang legacy na Perl

Siksik at flexible ang Perl code, at madalas isinulat ng mga taong ilang taon nang wala. Binabago ng mga sigil ang kahulugan ng isang pangalan, nagsisilbi ring class ang mga package, at iisang module ang nilo-load ng mga script sa maraming directory. Nahahanap ng text search ang mga string, pero hindi nito sinasabi sa agent kung aling subroutine talaga ang tinatawag ng isang script.

Ibinibigay ng Maguyva sa agent ang mga package, subroutine, import at constructor bilang structure, para ma-scope nito ang isang pagbabago bago hawakan ang code.

Ano ang kinukuha ng Maguyva mula sa Perl

Sakop ng Maguyva ang .pl, .pm, .t, .pod at .perl. Kinukuha ang mga subroutine bilang function at ang mga package declaration bilang class, at tinatanggal ang mga sigil ($, @, %, &, *) sa mga definition name, kaya mahahanap ang mga variable at subroutine gamit ang payak nilang pangalan.

Galing ang mga import sa mga use, require at package statement. Itinuturing na instantiation ang mga method call na may anyong Class->new, habang sadyang pinapanatili ang bless at tie sa call graph. Itinatala rin ng graph ang inheritance, override, type reference, read at write, at pag-raise ng exception.

Mga 189 built-in function (print, open, die, warn at mga katulad nito) ang nifi-filter mula sa mga call relationship, para lumitaw ang code ng repository.

Mga halimbawang agent prompt

  • “Aling mga script ang gumagamit ng Billing::Invoice, at aling mga subroutine nito ang tinatawag nila?” (dependency_search na incoming)
  • “Saan ginagawa ang Report::Monthly, at ano ang nangyayari pagkatapos ng ->new?” (find_symbol, tapos get_task_context)
  • “Hanapin ang lahat ng test file na nagte-test sa Auth::Session.” (text_pattern_search, tapos find_symbol)

Mga kilalang limitasyon

  • Payak na sub declaration lang sa loob ng package ang mga klasikong Perl method, kaya sa structural search, ang mas bagong dedikadong method syntax lang ang itinuturing na method. Gamitin ang functions preset para sa mas lumang object-oriented na Perl.
  • Hindi lumalabas bilang graph edge ang mga call sa mga na-filter na built-in. Gamitin ang text_pattern_search kapag kailangan mo ang bawat open o print call.

Mga susunod na hakbang

Mag-connect ng repository gamit ang quickstart, tapos tingnan ang support matrix sa compatibility page. Kung ililipat ang legacy code sa ibang scripting language, ikumpara sa gabay sa Python.

Pinakabagay

  • > Mga team na nagmana ng Perl service, CGI app o batch at report script na tumatakbo pa rin sa production.
  • > Mga module-based na codebase kung saan ang mga `.pm` package ay ginagamit ng maraming script at test file.
  • > Migration o decommission na trabaho kung saan ang unang tanong ay kung aling mga script ang umaasa sa aling mga module.

Mga workflow ng agent

  • > Ilista ang bawat script at module na gumagamit ng isang shared package bago ito baguhin.
  • > Hanapin kung saan ginagawa ang isang class gamit ang `->new` at kung aling mga subroutine ang tinatawag nito pagkatapos.
  • > I-trace ang isang report o job mula sa entry script nito sa mga module na nilo-load nito.

Mga detalye ng engine

  • > Sakop ng Perl support ang `.pl`, `.pm`, `.t`, `.pod` at `.perl`. Mga function ang mga subroutine, at mga class ang mga `package` declaration.
  • > Tinatanggal ang mga sigil sa mga definition name, nagiging import ang `use` at `require`, at itinuturing na instantiation ang `Class->new`.
  • > Mga 189 built-in tulad ng `print`, `open` at `die` ang nifi-filter mula sa mga call, habang nananatili sa graph ang `bless` at `tie`.

Mga kapaki-pakinabang na MCP entry point

  • find_symbol

    Gamitin kasama ang pangalan ng package o subroutine; tinatanggal ang mga sigil, kaya payak na pangalan ang i-search.

  • dependency_search

    Gumamit ng incoming traversal sa isang shared module para makita kung aling mga script at package ang umaasa rito.

  • text_pattern_search

    Gamitin para sa mga na-filter na built-in, config key at SQL string na nasa labas ng call graph.