私があなたを正しく理解しているかどうかはわかりませんが、もしそうなら、prefetch
他の関連する行オブジェクトを呼び出す準備が自動的に整う機能を調べたいと思うかもしれません。
たとえば、 ではGalileo
、すべてのページ (記事) を一覧表示するときに、このメカニズムを使用して、各ページ オブジェクトに関連する作成者オブジェクトを取得します (こちらを参照)。
あるオブジェクトを別のオブジェクトに格納することがポイントである場合は、オブジェクトに追加のデータを挿入することをお勧めします。
未テスト:
## some initial checks (run these only once)
# check that method name is available
die "Cannot use method 'extra_data'" if $book->can('extra_data');
# check that the reftype is a hash
require Scalar::Util;
die "Incorrect underlying type" unless Scalar::Util::reftype($book) eq 'HASH';
# check that the key is available
die "Key unavailable" if exists $book->{'my_extra_data'};
{
no strict 'refs';
# create a simple accessor for a hash stored in an object
*{ ref($book) . '::extra_data' } = sub {
my $self = shift;
#return all extra data if called without args
return $self->{my_extra_data} unless @_;
my $key = shift;
if (@_) {
$self->{my_extra_data}{$key} = shift;
}
return $self->{my_extra_data}{$key};
};
}
$book->extra_data( author => $author );
#then later
my $stored_author = $book->extra_data('author');