perl 4.0 patch 14: patch #11, continued
[p5sagit/p5-mst-13.2.git] / lib / dumpvar.pl
CommitLineData
a687059c 1package dumpvar;
2
154e51a4 3# translate control chars to ^X - Randal Schwartz
4sub unctrl {
5 local($_) = @_;
6 s/([\001-\037\177])/'^'.pack('c',ord($1)^64)/eg;
7 $_;
8}
a687059c 9sub main'dumpvar {
154e51a4 10 ($package,@vars) = @_;
a687059c 11 local(*stab) = eval("*_$package");
12 while (($key,$val) = each(%stab)) {
13 {
154e51a4 14 next if @vars && !grep($key eq $_,@vars);
a687059c 15 local(*entry) = $val;
16 if (defined $entry) {
154e51a4 17 print "\$$key = '",&unctrl($entry),"'\n";
a687059c 18 }
19 if (defined @entry) {
20 print "\@$key = (\n";
21 foreach $num ($[ .. $#entry) {
154e51a4 22 print " $num\t'",&unctrl($entry[$num]),"'\n";
a687059c 23 }
24 print ")\n";
25 }
1c3d792e 26 if ($key ne "_$package" && $key ne "_DB" && defined %entry) {
a687059c 27 print "\%$key = (\n";
28 foreach $key (sort keys(%entry)) {
154e51a4 29 print " $key\t'",&unctrl($entry{$key}),"'\n";
a687059c 30 }
31 print ")\n";
32 }
33 }
34 }
35}
63f2c1e1 36
371;