my $d;
my $c = sub {
print
chr( shift() - 1 - $d + unpack "V", unpack "P4", pack "V", 4 + s
+hift );
};
$d = 1 + unpack "V", unpack "P4", pack "V", 4 + $c;
{ my $F1 = $c; $c->( 64, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = my $F2 = my $F3 = $c; $c->( 112, $c ) }{ my $F1 = $c; $c->(
+ 100, $c ) }
{ $c->( 112, $c ) }{ my $F1 = $c; $c->(
+ 96, $c ) }
{ $c->( 108, $c ) }{ $c->( 44, $c ) }
+
{ $c->( 32, $c ) }{ $c->( 112, $c ) }
+
{ my $F1 = $c; $c->( 100, $c ) }{ $c->( 116, $c ) }
+
{ my $F1 = $c; $c->( 96, $c ) }{ $c->( 108, $c ) }
+
{ $c->( 44, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = $c; $c->( 96, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 108, $c ) }
{ $c->( 100, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = $c; $c->( 96, $c ) }{ $c->( 32, $c ) }
+
{ $c->( 116, $c ) }{ $c->( 104, $c ) }
+
{ my $F1 = my $F2 = my $F3 = $c; $c->( 108, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 112, $c ) }
{ my $F1 = my $F2 = $c; $c->( 108, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 8, $c ) }
{ my $F1 = $c; $c->( 84, $c ) }{ $c->( 112, $c ) }
+
{ my $F1 = my $F2 = my $F3 = $c; $c->( 108, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 108, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 96, $c ) }
{ $c->( 32, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 96, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 108, $c ) }{ my $F1 = $c; $c->(
+ 108, $c ) }
{ my $F1 = $c; $c->( 108, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 108, $c ) }
{ my $F1 = my $F2 = $c; $c->( 108, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = my $F2 = my $F3 = $c; $c->( 112, $c ) }{ my $F1 = $c; $c->(
+ 116, $c ) }
{ my $F1 = $c; $c->( 108, $c ) }{ my $F1 = $c; $c->(
+ 108, $c ) }
{ my $F1 = $c; $c->( 100, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 112, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 36, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 112, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 108, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 108, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 112, $c ) }
{ my $F1 = my $F2 = $c; $c->( 108, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = $c; $c->( 44, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 8, $c ) }
{ my $F1 = $c; $c->( 64, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = my $F2 = $c; $c->( 100, $c ) }{ $c->( 108, $c ) }
+
{ my $F1 = $c; $c->( 96, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 112, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 104, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = my $F2 = my $F3 = $c; $c->( 108, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 100, $c ) }
{ $c->( 32, $c ) }{ $c->( 68, $c ) }
+
{ my $F1 = $c; $c->( 100, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 116, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 44, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 64, $c ) }
{ $c->( 32, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 64, $c ) }
{ my $F1 = $c; $c->( 100, $c ) }{ my $F1 = $c; $c->(
+ 100, $c ) }
{ $c->( 32, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 108, $c ) }
{ my $F1 = my $F2 = $c; $c->( 112, $c ) }{ $c->( 32, $c ) }
+
{ $c->( 116, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 116, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 108, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = $c; $c->( 44, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 8, $c ) }
{ my $F1 = $c; $c->( 64, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = my $F2 = $c; $c->( 64, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 112, $c ) }
{ my $F1 = $c; $c->( 100, $c ) }{ my $F1 = $c; $c->(
+ 100, $c ) }
{ my $F1 = my $F2 = $c; $c->( 120, $c ) }{ my $F1 = $c; $c->(
+ 100, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 44, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 96, $c ) }
{ $c->( 32, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 96, $c ) }
{ my $F1 = $c; $c->( 96, $c ) }{ $c->( 112, $c ) }
+
{ my $F1 = $c; $c->( 100, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 112, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 104, $c ) }
{ my $F1 = my $F2 = $c; $c->( 108, $c ) }{ $c->( 32, $c ) }
+
{ $c->( 116, $c ) }{ $c->( 104, $c ) }
+
{ my $F1 = $c; $c->( 100, $c ) }{ $c->( 32, $c ) }
+
{ $c->( 116, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 112, $c ) }
{ my $F1 = $c; $c->( 100, $c ) }{ my $F1 = $c; $c->(
+ 100, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 112, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = $c; $c->( 44, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 8, $c ) }
{ my $F1 = $c; $c->( 64, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 108, $c ) }
{ $c->( 100, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = $c; $c->( 72, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 36, $c ) }
{ my $F1 = $c; $c->( 108, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = $c; $c->( 96, $c ) }{ $c->( 32, $c ) }
+
{ my $F1 = my $F2 = $c; $c->( 80, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 108, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 112, $c ) }{ my $F1 = $c; $c->(
+ 100, $c ) }
{ my $F1 = $c; $c->( 32, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 8, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 44, $c ) }
{ $c->( 32, $c ) }{ my $F1 = $c; $c->(
+ 68, $c ) }
{ my $F1 = $c; $c->( 108, $c ) }{ my $F1 = $c; $c->(
+ 104, $c ) }
{ $c->( 108, $c ) }{ my $F1 = $c; $c->(
+ 120, $c ) }
{ $c->( 32, $c ) }{ $c->( 68, $c ) }
+
{ my $F1 = $c; $c->( 104, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 96, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 104, $c ) }{ my $F1 = $c; $c->(
+ 100, $c ) }
{ my $F1 = my $F2 = $c; $c->( 108, $c ) }{ my $F1 = my $F2 =
+my $F3 = $c; $c->( 112, $c ) }
{ my $F1 = my $F2 = my $F3 = $c; $c->( 108, $c ) }{ my $F1 = my $F2 =
+$c; $c->( 108, $c ) }
{ my $F1 = my $F2 = $c; $c->( 8, $c ) }
Update 2009-09-01. Works on 5.10.0 and it's prettier.
Update 2002-10-17. This code makes assumptions about your perl runtime environment that may not be true. In particular your CPU should be little endian and use 32 bit pointers. Your compiler should not re-order structs. This means that the code as written works great on each of the platforms I tested it on. This is just a case where your mileage may vary.
Those environments are all ix86 using stock gcc-compiled perl unless otherwise stated:
- OpenBSD perl 5.6.1
- Cygwin perl 5.6.1
- Cygwin perl 5.8.0
- W2K ActiveState MSVC compiled perl 5.6.1.