hi bennett
do not use hash, use hashref instead.
>>>
#!/usr/bin/perl
use Cache::Memcached;
# Configure the memcached server
my $cache = new Cache::Memcached {
'servers' => [
'localhost:11211',
],
};
my %testhash;
$testhash{'a'} = 'b';
$testhash{'c'} = 'q';
$cache->set('abc', \%testhash); # make hashref
my %returnedhash = %{$cache->get('abc')}; # dereference
print $returnedhash{'a'}, "\n";
>>>
On Thu, Jul 2, 2009 at 6:51 PM, Bennett Haselton<[email protected]> wrote:
>
> This question:
> http://code.google.com/p/memcached/wiki/FAQ#Can_I_access_the_same_data_in_memcached_with_different_client_li
> says:
> "The Perl Cache::Memcached will use Storable to serialize complex structures
> (like hash references, objects, etc)."
>
> I take this to mean that storing hashes in Perl is supported; however when I
> tried the following code to store and retrieve a hash in memcached:
>
>>>>
> #!/usr/bin/perl
>
> use Cache::Memcached;
>
> # Configure the memcached server
>
> my $cache = new Cache::Memcached {
> 'servers' => [
> 'localhost:11211',
> ],
> };
>
> my %testhash;
> $testhash{'a'} = 'b';
> $testhash{'c'} = 'q';
>
> $cache->set('abc',%testhash);
>
> my %returnedhash = $cache->get('abc');
> print $returnedhash{'a'};
>>>>
>
> I get the following error:
> Argument "q" isn't numeric in int at
> /usr/lib/perl5/vendor_perl/5.8.8/Cache/Memcached.pm line 477.
>
> ('q' appears in the line "$testhash{'c'} = 'q';". If I replace that 'q'
> with some other letter, then the error message complains about whatever
> letter I put there instead.)
>
> So does this mean that (a) storing Perl hashes in memcached is not supported
> after all; (b) it is officially supported, and this is a bug, or (c) I am
> doing it wrong?
>
> -Bennett
>
>