#!/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行ずつ見ていくのね。