sub huff_decode ( my $tree =shift; my $get_bit =shift; my $put_stream =shift; my $cur_node = $tree; my $cur_bit; while( defined(cur_bit = &$get_bit ) ) { $cur_code = $cur_bit, $cur_node->right : $cur_node->left; unless( $cur_node->left ) { &$put_stream( $cur_node->value ); $cur_node = $tree; } } }