63 |
warn "## bulk len: ",dump($len); |
warn "## bulk len: ",dump($len); |
64 |
return undef if $len eq "nil\r\n"; |
return undef if $len eq "nil\r\n"; |
65 |
my $v; |
my $v; |
66 |
read($sock, $v, $len) || die $!; |
if ( $len > 0 ) { |
67 |
warn "## bulk v: ",dump($v); |
read($sock, $v, $len) || die $!; |
68 |
|
warn "## bulk v: ",dump($v); |
69 |
|
} |
70 |
my $crlf; |
my $crlf; |
71 |
read($sock, $crlf, 2); # skip cr/lf |
read($sock, $crlf, 2); # skip cr/lf |
72 |
return $v; |
return $v; |
81 |
|
|
82 |
sub __sock_ok { |
sub __sock_ok { |
83 |
my $ok = <$sock>; |
my $ok = <$sock>; |
84 |
|
return undef if $ok eq "nil\r\n"; |
85 |
confess dump($ok) unless $ok eq "+OK\r\n"; |
confess dump($ok) unless $ok eq "+OK\r\n"; |
86 |
} |
} |
87 |
|
|
103 |
my $self = shift; |
my $self = shift; |
104 |
warn "## _sock_send_bulk ",dump( @_ ); |
warn "## _sock_send_bulk ",dump( @_ ); |
105 |
my $value = pop; |
my $value = pop; |
106 |
print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n"; |
$value = '' unless defined $value; # FIXME errr? nil? |
107 |
|
print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n" |
108 |
} |
} |
109 |
|
|
110 |
sub _sock_send_bulk { |
sub _sock_send_bulk { |
366 |
|
|
367 |
=head2 lrem |
=head2 lrem |
368 |
|
|
369 |
$r->lrem( $key, $count, $value ); |
my $modified_count = $r->lrem( $key, $count, $value ); |
370 |
|
|
371 |
=cut |
=cut |
372 |
|
|
375 |
$self->_sock_send_bulk_number( 'LREM', $key, $count, $value ); |
$self->_sock_send_bulk_number( 'LREM', $key, $count, $value ); |
376 |
} |
} |
377 |
|
|
378 |
|
=head2 lpop |
379 |
|
|
380 |
|
my $value = $r->lpop( $key ); |
381 |
|
|
382 |
|
=cut |
383 |
|
|
384 |
|
sub lpop { |
385 |
|
my ( $self, $key ) = @_; |
386 |
|
$self->_sock_result_bulk( 'lpop', $key ); |
387 |
|
} |
388 |
|
|
389 |
|
=head2 rpop |
390 |
|
|
391 |
|
my $value = $r->rpop( $key ); |
392 |
|
|
393 |
|
=cut |
394 |
|
|
395 |
|
sub rpop { |
396 |
|
my ( $self, $key ) = @_; |
397 |
|
$self->_sock_result_bulk( 'rpop', $key ); |
398 |
|
} |
399 |
|
|
400 |
=head1 AUTHOR |
=head1 AUTHOR |
401 |
|
|
402 |
Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >> |
Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >> |