Sub::W...allTree(3pm)

πŸ“¦
version 2.02 Β· 3 versions
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

✨ NAME ✨

okay so this is Sub::W...allTree(3pm) β€” the manual page for Sub::WrapPackages::CallTree, bestie πŸ’– and what it does is literally show you a tree of function calls 🌳


🌸 DESCRIPTION 🌸

it's a tool that uses Sub::WrapPackages to show on STDERR a tree of function calls as your code runs 🫢

and not just the calls β€” it also shows the arguments, and a list of return values. obsessed. πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

in your code β€” in a test file, perhaps:

use Sub::WrapPackages::CallTree qw(My::App::* And::Another::Namespace)

or in your environment:

PERL5OPT=-MSub::WrapPackages::CallTree=My::App::*,And::Another::Namespace

the results will look something like this:

Called Sub::WrapPackages::Tests::Victim::foo with: [Sub::WrapPackages::Tests::Victim]
  Called Sub::WrapPackages::Tests::Victim::bar with: [1]
    Called Sub::WrapPackages::Tests::Victim::baz with: [OMG, ROBOTS, 5]
    Return from Sub::WrapPackages::Tests::Victim::baz with: [OMG, ROBOTS, 5]
  Return from Sub::WrapPackages::Tests::Victim::bar with: [OMG, ROBOTS, 5]
Return from Sub::WrapPackages::Tests::Victim::foo with: [2, OMG, ROBOTS, 5]

NB that all arguments and return values are stringified for display πŸ“ β€” because there is genuinely no way of nicely displaying a tree of function calls as well as complex data structures, and the tree of function calls is the more important one. so it ate the priority slot. periodt. πŸ’…


πŸŽ€ PARAMETERS πŸŽ€

the arguments are the same as those you would pass as the "packages" option to Sub::WrapPackages. the other options have sensible defaults and can not (currently) be set 🚫 β€” if you would like to be able to override the defaults, please submit a pull request with tests πŸ™


πŸ’€ BUGS and IMPROVEMENTS πŸ’€

please report bugs and submit improvements via Github 🌈


πŸ’œ THANKS TO πŸ’œ

thanks to Will Shepherd, who berated me for cut n pasting the code that implements this all over the place while debugging 😭, and prompting me to wrap it up into a much smaller piece of code that I can splatter all over the place while debugging. iconic behaviour honestly. 🫢


Copyright 2022 David Cantrell <david@cantrell.org.uk>

this software is free-as-in-speech software ✨ and may be used, distributed, and modified under the terms of either the GNU General Public Licence version 2 or the Artistic Licence. it's up to you which one you use πŸ’… the full text of the licences can be found in the files GPL2.txt and ARTISTIC.txt, respectively.


🧚 CONSPIRACY 🧚

this code is also free-as-in-mason. 🧱


and that's the whole page, bestie πŸŽ€ it was perl v5.34.0, dated 2022-07-23, and generated straight from Sub::W...allTree(3pm) β€” love that for us πŸ’–

πŸ“¦ where this page comes from