---
name: "Devel::Trace"
section: "3pm"
platform: "linux"
package: "libdevel-trace-perl"
version: "0.12-1.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Devel::Trace"
---

# Devel::Trace(3pm)

Print out each line before it is executed (like "sh -x")

## NAME

Devel::Trace - Print out each line before it is executed (like "sh -x")

## SYNOPSIS

```
  perl -d:Trace program
```

## DESCRIPTION

If you run your program with `"perl -d:Trace program"`, this module will print a message to standard error just before each line is executed.   For example, if your program looks like this:

```
        #!/usr/bin/perl

        print "Statement 1 at line 4\n";
        print "Statement 2 at line 5\n";
        print "Call to sub x returns ", &x(), " at line 6.\n";

        exit 0;

        sub x {
          print "In sub x at line 12.\n";
          return 13;
        }
```

Then  the `"Trace"` output will look like this:

```
        >> ./test:4: print "Statement 1 at line 4\n";
        >> ./test:5: print "Statement 2 at line 5\n";
        >> ./test:6: print "Call to sub x returns ", &x(), " at line 6.\n";
        >> ./test:12:   print "In sub x at line 12.\n";
        >> ./test:13:   return 13;
        >> ./test:8: exit 0;
```

This is something like the shell's `"-x"` option.

## DETAILS

Inside your program, you can enable and disable tracing by doing

```
    $Devel::Trace::TRACE = 1;   # Enable
    $Devel::Trace::TRACE = 0;   # Disable
```

or

```
    Devel::Trace::trace('on');  # Enable
    Devel::Trace::trace('off'); # Disable
```

`"Devel::Trace"` exports the `"trace"` function if you ask it to:

```
    import Devel::Trace 'trace';
```

Then if you want you just say

```
    trace 'on';                 # Enable
    trace 'off';                # Disable
```

## TODO

- •

  You should be able to  send the trace output to the filehandle of your choice.

- •

  You should be able to specify the format of the output.

- •

  You should be able to get the output into a string.

We'll see.

## LICENSE

Devel::Trace 0.11 and its source code are hereby placed in the public domain.

## Author

Mark-Jason Dominus (C\<mjd-perl-trace@plover.com\>), Plover Systems co. See the C\<Devel::Trace.pm\> Page at http://www.plover.com/~mjd/perl/Trace for news and upgrades.
