sub transpose { return if length $_[0] < $BUFSIZE; pack"B*",join"",(split//,unpack"B*",substr$_[0],0,$BUFSIZE)[map$_%$BUFSIZE*$BUFSIZE+int($_/$BUFSIZE),0..$BUFSIZE**2-1] }