perl -d -e 42
*****
DB<1> |h
*****
V DB filename line
*****
b 237 $x > 30
b 33 /pattern/i
*****
a 53 print "DB FOUND $foo\n"
*****
$ PERLDB_OPTS="N f=2" perl -d myprogram
*****
|V main
*****
DB<8>
*****
DB<17>>
*****
DB<1> for (1..4) { \
cont: print "ok\n"; \
cont: }
ok
ok
ok
ok
*****
shell_prompt% perl -d camel_flea
Stack dump during die enabled outside of evals.
Loading DB routines from perl5db.pl patch level 0.94
Emacs support available.
Enter h or `h h' for help.
main::(camel_flea:3): $a = 1;
DB<1>
*****
DB<1> b infested
DB<2> c
*****
main::infested(camel_flea:12): my bugs;
*****
DB<2> w
9: }
10:
11: sub infested {
12==>b my $bugs;
13: return 3.5;
14: }
DB<2>
*****
DB<2> T
$ = main::infested called from file `Ambulation.pm' line 10
@ = Ambulation::legs(1, 2, 3, 4) called from file `camel_flea' line 7
$ = main::pests('bactrian', 4) called from file `camel_flea' line 4
*****
BEGIN { require "myperl5db.pl" }
*****
$DB::alias{'len'} = 's/^len(.*)/p length($1)/';
$DB::alias{'stop'} = 's/^stop (at|in)/b/';
$DB::alias{'ps'} = 's/^ps\b/p scalar /';
$DB::alias{'quit'} = 's/^quit\b.*/exit/';
*****
&parse_options("NonStop=1 LineInfo=db.out");
sub afterinit { $trace = 1; }
*****
perl -d:DProf mycode.pl
*****
print STDOUT, "goodbye", $adj, "world!\n"; # WRONG
*****
print STDOUT "goodbye", $adj, "world!\n"; # ok
*****
print $filehandle "goodbye", $adj, "world!\n";
*****
print $notafilehandle, "goodbye", $adj, "world!\n";
*****
($one,$two) = /(\w+) (\w+)/;
*****
print "the answer is @foo[1]\n";
*****
@foo[1] = ;
*****
print "hi"; # WRONG, omit angles
*****
while () { }
while ($_ = ) { }..
; # data discarded!
*****
$x = /foo/; # changes $x
$x =~ /foo/; # doesn't
*****
use English;
*****
if (expression) {
block;
}
else if (another_expression) {
another_block;
}
*****
if (expression) {
block;
}
elsif (another_expression) {
another_block;
}
*****
camel='dromedary'; # WRONG
*****
$camel='dromedary'; # ok
*****
foreach hump (one two)
stuff_it $hump
end
*****
foreach $hump ("one", "two") {
stuff_it($hump);
}
*****
chop($thishost = `hostname`);
*****
sub SeeYa { die "Hasta la vista, baby!" }
$SIG{'QUIT'} = SeeYa;
*****
print "$a::$b::$c\n";
*****
print "$var::abc::xyz\n";
*****
shift @list + 20; # now parses like shift(@list + 20), illegal!
$n = keys %map + 20; # now parses like keys(%map + 20), illegal!
*****
sleep $dormancy + 20;
*****
/foo/ ? ($a += 2) : ($a -= 2);
*****
/foo/ ? $a += 2 : $a -= 2;
*****
(/foo/ ? $a += 2 : $a) -= 2;
*****
$a += /foo/ ? 1 : 2;
*****
foreach $var (grep /x/, @list) { ... }
*****
foreach $var (my @tmp = grep /x/, @list) { ... }
*****
my %keywords;
for (@keywords) {
$keywords{$_}++;
}
*****
${$pkg . '::' . $varname} = &{ "fix_" . $varname }($pkg);
*****
"foundstring" =~ /$currentpattern/; # Dummy match (must succeed).
while (<>) {
print if //;
}
*****
print if /one-hump/ || /two/;
*****
print if /one-hump|two/;
*****
while (<>) {
next if /^#/;
next if /^$/;
chop;
@piggies = split(/,/);
...
}
*****
opendir(DIR,".");
@files = sort grep(!/^\./, readdir(DIR));
closedir(DIR);
*****
$foo = substr($foo,0,3) . $bar . substr($foo,6);
*****
substr($foo,3,3) = $bar;
*****
if ($a) {
$foo = $a;
}
elsif ($b) {
$foo = $b;
}
elsif ($c) {
$foo = $c;
}
*****
$pi ||= 3;
*****
print $fullname{$name} . " has a new home directory " .
$home{$name} . "\n";
*****
print $fullname{$name}, " has a new home directory ",
$home{$name}, "\n";
*****
sub numtoname {
local($_) = @_;
unless (defined $numtoname{$_}) {
local(@a) = gethostbyaddr(pack('C4', split(/\./)),2);
$numtoname{$_} = @a > 0 ? $a[0] : $_;
}
$numtoname{$_};
}
*****
chmod +t /usr/bin/perl
*****
open(FILE, $file) or die "$0: Can't open $file for reading: $!\n";
*****
while ($condition) { # for short ones, align with keywords
# do something
}
# if the condition wraps, line up the
# braces with each other
while ($this_condition and $that_condition
and $this_other_long_condition)
{
# do something
}
*****
open(FOO,$foo) || die "Can't open $foo: $!";
*****
die "Can't open $foo: $!" unless open(FOO,$foo);
*****
print "Starting analysis\n" if $verbose;
*****
$verbose && print "Starting analysis\n";
*****
return print reverse sort num values %array;
return print(reverse(sort num (values(%array))));
*****
LINE:
for (;;) {
statements;
last LINE if $foo;
next LINE if /^#/;
statements;
}
*****
$ALL_CAPS_HERE # constants only (beware clashes with Perl vars!)
$Some_Caps_Here # package-wide global/static
$no_caps_here # function scope my() or local() variables
*****
$IDX = $ST_MTIME;
$IDX = $ST_ATIME if $opt_u;
$IDX = $ST_CTIME if $opt_c;
$IDX = $ST_SIZE if $opt_s;
*****
mkdir $tmpdir, 0700 or die "can't mkdir $tmpdir: $!";
chdir($tmpdir) or die "can't chdir $tmpdir: $!";
mkdir 'tmp', 0777 or die "can't mkdir $tmpdir/tmp: $!";
*****
opendir(D, $dir) or die "can't opendir $dir: $!";
*****
tr [abc]
[xyz];