#!/usr/bin/perl --
use strict;
use warnings;
my $message = 'Hello';
my @nums = (1, 2, 3);
my %scores = (math => 80, english => 77);
my $twice = twice(5);
$DB::single = 1;
for my $num (@nums){
if ($num == 2) { $DB::single = 1}
print "$num\n";
}
sub twice {
my $num = shift;
return $num * 2;
}
[vagrant@localhost cgi-bin]$ perl -d app.cgi
Loading DB routines from perl5db.pl version 1.32
Editor support available.
Enter h or `h h’ for help, or `man perldebug’ for more help.
main::(app.cgi:6): my $message = ‘Hello’;
DB<1> q
-dオプションでデバッガの起動ということだが、うむ、イマイチよくわからん。
q でデバック終了。
n でシングルステップ
違う例で見てみる。
#!/usr/bin/perl —
use strict;
use warnings;
my $num = 3;
for(my $i=1;$i<=3;$i++){
print $num*$i."\n";
}
[/perl]
[vagrant@localhost cgi-bin]$ perl app.cgi
3
6
9
[vagrant@localhost cgi-bin]$ perl -d app.cgi
Loading DB routines from perl5db.pl version 1.32
Editor support available.
Enter h or `h h’ for help, or `man perldebug’ for more help.
main::(app.cgi:6): my $num = 3;
DB<1> n
main::(app.cgi:9): }
DB<1> n
main::(app.cgi:7): for(my $i=1;$i<=3;$i++){
DB<1> n
main::(app.cgi:8): print $num*$i.”\n”;
DB<1> n
3
main::(app.cgi:8): print $num*$i.”\n”;
DB<1> n
6
main::(app.cgi:8): print $num*$i.”\n”;
DB<1> n
9
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
DB<1> q
なるほど、1行ずつ見ていくのね。