sub shrink { my $shrunk = "\0" x (length($_[0]) * 7/8); my $bit = 0; for my $orig_bit (0..(8*length($_[0])-1)) { next if $orig_bit % 8 == 7; vec($shrunk, $bit++, 1) = vec($_[0], $orig_bit, 1); } $shrunk; } sub grow { my $grown = "\0" x (length($_[0]) * 8/7); my $orig_bit = 0; for my $bit (0..(8*length($_[0])-1)) { vec($grown, $orig_bit++, 1) = vec($_[0], $bit, 1); vec($grown, $orig_bit++, 1) = 0 if $orig_bit % 8 == 7; } $grown; }