This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perl 5.0 alpha 5
[perl5.git] / peek
1 #!./perl
2
3 sub peekstr {
4     local ($addr, $len) = @_;
5     local ($mem) = unpack("P$len", pack("L",$addr+0));
6     $mem;
7 }
8
9 sub unpackmem {
10     local ($addr, $len, $template) = @_;
11     local $mem = peekstr($addr, $len);
12     unpack($template, $mem);
13 }
14
15 $foo = "stuff";
16
17 ($any, $refcnt, $type, $flags, $storage, $private) =
18         unpackmem(\$foo, 12, "L2 C4");
19
20 printf "SV = any %lx refcnt %d type %d flags %x storage '%c' private %x\n",
21         $any, $refcnt, $type, $flags, $storage, $private;
22
23 if ($type >= 4) {
24     ($pv, $cur, $len) = unpackmem($any, 12, "L3");
25
26     printf "XPV = pv %lx cur %d len %d\n", $pv,$cur,$len;
27
28     $string = peekstr($pv, $cur);
29
30     print "String = $string\n"
31 }