diff options
Diffstat (limited to 'gnu/usr.bin/perl/lib/dumpvar.pl')
-rw-r--r-- | gnu/usr.bin/perl/lib/dumpvar.pl | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gnu/usr.bin/perl/lib/dumpvar.pl b/gnu/usr.bin/perl/lib/dumpvar.pl new file mode 100644 index 0000000..5427494 --- /dev/null +++ b/gnu/usr.bin/perl/lib/dumpvar.pl @@ -0,0 +1,37 @@ +package dumpvar; + +# translate control chars to ^X - Randal Schwartz +sub unctrl { + local($_) = @_; + s/([\001-\037\177])/'^'.pack('c',ord($1)^64)/eg; + $_; +} +sub main'dumpvar { + ($package,@vars) = @_; + local(*stab) = eval("*_$package"); + while (($key,$val) = each(%stab)) { + { + next if @vars && !grep($key eq $_,@vars); + local(*entry) = $val; + if (defined $entry) { + print "\$$key = '",&unctrl($entry),"'\n"; + } + if (defined @entry) { + print "\@$key = (\n"; + foreach $num ($[ .. $#entry) { + print " $num\t'",&unctrl($entry[$num]),"'\n"; + } + print ")\n"; + } + if ($key ne "_$package" && $key ne "_DB" && defined %entry) { + print "\%$key = (\n"; + foreach $key (sort keys(%entry)) { + print " $key\t'",&unctrl($entry{$key}),"'\n"; + } + print ")\n"; + } + } + } +} + +1; |