-sub _sock_result_bulk {
- my $self = shift;
- warn "## _sock_result_bulk ",dump( @_ ) if $debug;
- print $sock join(' ',@_) . "\r\n";
- __sock_read_bulk();
-}
+ my $result = <$sock> || confess("Can't read socket: $!");
+ my $type = substr($result,0,1);
+ $result = substr($result,1,-2);
+
+ $result = decode($enc, $result) if $enc;
+ warn "[RECV] '$type$result'" if $deb;
+
+ if ( $command eq 'info' ) {
+ my $hash;
+ foreach my $l ( split(/\r\n/, $self->__read_bulk($result) ) ) {
+ my ($n,$v) = split(/:/, $l, 2);
+ $hash->{$n} = $v;
+ }
+ return $hash;
+ } elsif ( $command eq 'keys' ) {
+ return $self->__read_multi_bulk($result)
+ if $type eq '*';
+ my $keys = $self->__read_bulk($result);
+ return split(/\s/, $keys) if $keys;
+ return;
+ }