The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package Kwiki::Cache;
use Kwiki::Plugin -Base;
use Digest::MD5;
our $VERSION = '0.11';

const class_id => 'cache';
const class_title => 'Generic Cache';

sub process {
    my $closure = shift;
    my $cache_name = Digest::MD5::md5_hex(join '!@#$', @_);
    my $path = $self->plugin_directory;
    my $io = io->catfile($path, $cache_name)->assert;
    unless ($io->exists) {
        $io->lock->mode('>>')->open;
        if ($io->empty) {
            $io->print(&$closure);
        }
        $io->close;
    }
    $io->scalar;
}

__DATA__

=head1 NAME 

Kwiki::Cache - Kwiki Cache Plugin

=head1 SYNOPSIS

=head1 DESCRIPTION

=head1 AUTHOR

Brian Ingerson <ingy@cpan.org>

=head1 COPYRIGHT

Copyright (c) 2004. Brian Ingerson. All rights reserved.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

See http://www.perl.com/perl/misc/Artistic.html

=cut