sub huff1 { my ( $string, $codes) = @_; my ( $ret, $len) = ( '', 0); # $len counts bits for ( split( //, $string), '_eos' ) { vec( $ret, $len ++, 1) = $_ for split //, $codes->{ $_}; } return $ret; } #### sub dehuff1 { my ( $string, $code) = @_; my %decode = reverse %$code; my ( $ret, $c, $where) = ( '', '', 0); while ( 1 ) { $c .= vec( $string, $where ++, 1); next unless exists $decode{ $c}; last if $decode{ $c} eq '_eos'; $ret .= $decode{ $c}; $c = ''; } return $ret; }