$s = eval { $index = 0; # $O $commabyte = 0; # $C $textstr = 'This is my 100th PM post'; # $t sub{ $index++; $commabyte = @_ ? $commabyte : eval pack( 'b*', vec( pack( 'b*', $_{64} ), $index-1, 1 ) ? $_{1} : $_{8} ) . $commabyte . pack( 'c', vec( pack( 'b*', $_{64} ), ($index-1)%3, 8 ) ) . pack( 'b*', vec( pack( 'b*', $_{64} ), $index-1, 1 ) ? $_{8} : $_{1} ) . vec( $textstr, $index-1, 8 ); }; }; #### 1: pack( 'b*', vec( '&|^', $index-1, 1 ) ? '~' : '' ) 2: $commabyte 3: pack( 'c', vec( '&|^', ($index-1)%3, 8 ) ) 4: pack( 'b*', vec( '&|^', $index-1, 1 ) ? '' : '~' ) 5: vec( $textstr, $index-1, 8 ) ) #### [~](char) (operator) [~](char) #### bit: 01234567 low nybbles j = 01010110 0101 u = 10101110 1010 s = 11001110 1100 t = 00101110 0010 #### $c = $offset - ( ($offset - ($offset % 4))/4 + ($offset % 4 ? 1 : 0) ); # first frame $i = ( (vec( $bitstr, $c, 4 ) + # low nybble (vec( $bitstr, $c + 1, 4 )<<4)) # high nybble >> 4 - ($offset % 4) - 4 * ( ($offset % 4) ? 0 : 1 ) # shift off extra bits ); #### $i += $i%2 ? -1 : 1 if( ( (($offset + 1) % 12) && !(($offset + 1) % 3) ) || $offset + 1 == 22 ); #### $T = vec( pack( 'C', $i ), 0, 4 ) + vec( pack( 'b*', $_{65} ), $offset, 1 ) * (1<<4) + (1<<5); #### print pack( 'c', ($T += $T == (1<<5) ? 0 : (1<<6)) -= $offset % 13 == 0 ? (1<<5) : 0 );