Cached::Memcached::Managed references

Jason Tang jason at dragor.net
Mon Feb 18 12:05:15 GMT 2008


Hi all

A recent annoyance has brought me out of my lurking on london.pm so I'm
wondering if someone could shed some light on this rather bizarre
discovery. I'm hoping its something really obvious I've overlooked but
we'll see.

I've recently started looking into memcached and wanted to try a few
simple things to try it out and give it a little test drive. The little
script below seems to imply that the moment I pass the
Cache::Memcached::Managed object as a reference 'something' changes and
it doesnt play ball.

-- >8 --
#!/usr/bin/env perl

use strict;
use warnings;
use Cache::Memcached::Managed;
use Data::Dumper;


sub foo {
    my($attrs) = @_;

    print "  calling foo\n";
    my $cache = ($attrs->{cache} || undef);
    my $id = ($attrs->{id} || undef);

    die '$cache isnt Cache::Memcached::Managed'
        if (not defined $cache or ref($cache) ne 'Cache::Memcached::Managed');

    print Dumper( $cache->get( $id ) );
}

sub bar {
    my($cache, $id, $value) = @_;

    $cache->set(
        value   => $value,
        id      => $id
    );
}

my $value = {
    a => 'hello',
    b => 'good bye',
    c => scalar localtime,
};

my $cache = Cache::Memcached::Managed->new(
    data => '10.3.3.204:11211',
);

my $id = 'FOO';


print "  direct get\n";
print Dumper( $cache->get( $id ) );

foo({ cache => $cache, id => $id });

# set directly
$cache->set(
    value   => $value,
    id      => $id
);

# set in method
bar($cache,$id,$value);

print "  direct get\n";
print Dumper( $cache->get( $id ) );
-- >8 --

The output I get is..

  direct get
$VAR1 = {
          'c' => 'Mon Feb 18 11:52:50 2008',
          'a' => 'hello',
          'b' => 'good bye'
        };
  calling foo
$VAR1 = undef;
  direct get
$VAR1 = {
          'c' => 'Mon Feb 18 11:59:54 2008',
          'a' => 'hello',
          'b' => 'good bye'
        };


It seems the call to foo though is a correct object reference but fails.
the original object reference is fine and still works.

Any clues?

TIA

Jason
-- 
Jason Tang  - email: jason at dragor.net - msn: jason-msn at dragor.net


More information about the london.pm mailing list