I have a system script in perl. I need some equivalent of bash -x to determine what is going wrong with the script. Is there something equivalent?
EDIT: What bash -x does is that it prints each line as it is evaluated. This makes debugging code that is just missing some path variable or file very easy.
Take a look at Devel::Trace
or Devel::ebug
.
Given this program named w.pl
:
#!/usr/bin/perl
use strict;
use warnings;
my $answer = 42;
if ($answer == 6 * 9) {
print "everything is running fine.\n";
} else {
warn "there must be a bug somewhere...\n";
}
You can use Devel::Trace
to watch the execution:
perl -d:Trace w.pl
Which produces the following output:
>> w.pl:6: my $answer = 42;
>> w.pl:8: if ($answer == 6 * 9) {
>> w.pl:11: warn "there must be a bug somewhere...\n";
there must be a bug somewhere...