Trace(3pm)

πŸ“¦
version 0.12 Β· 4 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble

πŸ’– Devel::Trace β€” the Trace(3pm) page, bestie edition πŸ’–

okay so. you know how sh -x prints every line before it runs it? this module is that, but for Perl. it's literally called Devel::Trace and it prints out each line before it is executed. iconic behavior, honestly. ✨


🌸 SYNOPSIS 🌸

perl -d:Trace program

that's it. that's the whole thing. one flag. go off. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

so 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. not after, before. main character timing. ⏰

like, say 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;

see how it hopped into sub x and then came back out to line 8? yeah. it's giving omniscient narrator. πŸ‘‘

this is something like the shell's -x option. fr fr. πŸ”₯


πŸ’œ DETAILS πŸ’œ

inside your program, you can enable and disable tracing by doing:

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

or, if you'd rather use the function:

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

and here's the cute part β€” 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

no cap. that's the whole vibe. 🫢


πŸŽ€ TODO πŸŽ€

the things we could have, bestie. someday. πŸ™ˆ

  • 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. it's free, it's yours, do what you want with it. slay. 🌈


πŸ‘‘ Author πŸ‘‘

Mark-Jason Dominus (mjd-perl-trace@plover.com), Plover Systems co.

See the Devel::Trace.pm Page at http://www.plover.com/~mjd/perl/Trace for news and upgrades. go check it out, tell them we said hi. πŸ’Œ


and that's a wrap on this little Trace(3pm) page from perl v5.32.0, dated 2021-01-04 β€” yeah it's a classic, it's vintage, it ate. πŸ’…βœ¨ πŸ¦‹

πŸ“¦ where this page comes from