4 |
use strict; |
use strict; |
5 |
|
|
6 |
use IO::Socket::INET; |
use IO::Socket::INET; |
7 |
use Data::Dump qw/dump/; |
use Data::Dumper; |
8 |
use Carp qw/confess/; |
use Carp qw/confess/; |
9 |
|
|
10 |
=head1 NAME |
=head1 NAME |
61 |
sadd => 1, srem => 1, |
sadd => 1, srem => 1, |
62 |
sismember => 1, |
sismember => 1, |
63 |
echo => 1, |
echo => 1, |
64 |
|
getset => 1, |
65 |
|
smove => 1, |
66 |
|
zadd => 1, |
67 |
|
zrem => 1, |
68 |
|
zscore => 1, |
69 |
|
zincrby => 1, |
70 |
|
append => 1, |
71 |
}; |
}; |
72 |
|
|
73 |
# we don't want DESTROY to fallback into AUTOLOAD |
# we don't want DESTROY to fallback into AUTOLOAD |
82 |
my $command = $AUTOLOAD; |
my $command = $AUTOLOAD; |
83 |
$command =~ s/.*://; |
$command =~ s/.*://; |
84 |
|
|
85 |
warn "## $command ",dump(@_) if $self->{debug}; |
warn "## $command ",Dumper(@_) if $self->{debug}; |
86 |
|
|
87 |
my $send; |
my $send; |
88 |
|
|
133 |
} |
} |
134 |
|
|
135 |
if ( $type eq '-' ) { |
if ( $type eq '-' ) { |
136 |
confess $result; |
confess "[$command] $result"; |
137 |
} elsif ( $type eq '+' ) { |
} elsif ( $type eq '+' ) { |
138 |
return $result; |
return $result; |
139 |
} elsif ( $type eq '$' ) { |
} elsif ( $type eq '$' ) { |
154 |
my $v; |
my $v; |
155 |
if ( $len > 0 ) { |
if ( $len > 0 ) { |
156 |
read($self->{sock}, $v, $len) || die $!; |
read($self->{sock}, $v, $len) || die $!; |
157 |
warn "<< ",dump($v),$/ if $self->{debug}; |
warn "<< ",Dumper($v),$/ if $self->{debug}; |
158 |
} |
} |
159 |
my $crlf; |
my $crlf; |
160 |
read($self->{sock}, $crlf, 2); # skip cr/lf |
read($self->{sock}, $crlf, 2); # skip cr/lf |
173 |
$list[ $_ ] = $self->__read_bulk( substr(<$sock>,1,-2) ); |
$list[ $_ ] = $self->__read_bulk( substr(<$sock>,1,-2) ); |
174 |
} |
} |
175 |
|
|
176 |
warn "## list = ", dump( @list ) if $self->{debug}; |
warn "## list = ", Dumper( @list ) if $self->{debug}; |
177 |
return @list; |
return @list; |
178 |
} |
} |
179 |
|
|