NAME

Devel::Trace::Cwd - Print out each line before it is executed and track cwd changes

VERSION

version 0.02

SYNOPSIS

perl -d:Trace::Cwd program

DESCRIPTION

If you run your program with perl -d:Trace::Cwd 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.

If the current working directory changes during execution that will be printed to standard error with a CWD: prefix.

DETAILS

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

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

or

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

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

import Devel::Trace::Cwd '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.

BASED ON Devel::Trace

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.

AUTHOR

Chris Williams <chris@bingosnet.co.uk>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Chris Williams and Mark-Jason Dominus.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.