5 chomp(my $packet = <>);
6 $packet =~ s/./sprintf("%04b", hex $&)/ge if $packet =~ /[2-9A-F]/;
9 my ($ppack, $bits) = @_;
11 $$ppack =~ s/.{$bits}/$rv=eval"0b$&";''/e;
12 # say "get_b $bits=$rv";
22 my $ver = get_b($pp, 3);
24 my $typ = get_b($pp, 3);
28 while (get_b($pp, 1)) {
30 $num += get_b($pp, 4);
33 $num += get_b($pp, 4);
36 $result .= "op($typ,";
37 my $li = get_b($pp, 1);
39 my $subp = get_b($pp, 11);
45 my $subl = get_b($pp, 15);
46 my $s = substr($pp, 0, $subl);
56 return $l - length($pp);
59 use List::Util qw(sum product min max);
72 return $rest[0] > $rest[1] ? 1 : 0;
74 return $rest[0] < $rest[1] ? 1 : 0;
76 return $rest[0] == $rest[1] ? 1 : 0;
81 say $result, ' = ', eval $result;