---
name: "Sub::WrapPackages::CallTree"
section: "3pm"
platform: "linux"
package: "libsub-wrappackages-perl"
version: "2.02-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Sub::WrapPackages::CallTree"
---

# Sub::WrapPackages::CallTree(3pm)

show a tree of function calls

## NAME

Sub::WrapPackages::CallTree - show a tree of function calls

## DESCRIPTION

Tool that uses Sub::WrapPackages to show on STDERR a tree of function calls as your code runs, including arguments and a list of return values

## 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, as there is no way of nicely displaying a tree of function calls as well as complex data structures, and the tree of function calls is more important.

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

## COPYRIGHT and LICENCE

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.
