NAME
Object::Attribute::Cached - cache complex object attributes
SYNOPSIS
use Object::Attribute::Cached
attribute1 => sub { shift->some_complex_task },
squared => sub { shift->{num} ** 2 },
uptosquare => sub { 1 .. shift->squared },
squaredsquared => sub { map $_ ** 2, shift->uptosquare };
DESCRIPTION
This provides a simple interface to writing simple caching attribute methods.
It avoids having to write code like:
sub parsed_query {
my $self = shift;
$self->{_cached_parsed_query} ||= $self->parse_the_query;
return $self->{_cached_parsed_query};
}
Instead you can just declare:
use Object::Attribute::Cached
parsed_query => sub { shift->parse_the_query };
It's nothing fancy, and it might get confused if you've context-specific code lurking in there as it attempts to cope with these attributes being able to be lists and hashes, but it's Good Enough for most of what I need.
AUTHOR
Tony Bowden, <kasei@tmtm.com>.
COPYRIGHT
Copyright (C) 2003 Kasei. All rights reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.