txt: ## dist_cpan-BDUGGAN-Cache-Dir.md
  # NAME
  
  Cache::Dir - A simple key-value store using the filesystem.
  
  # SYNOPSIS
  
  ```
  use Cache::Dir;
  my $cache = Cache::Dir.new: dir => $*HOME.child('.cache');
  
  $cache.get-cached: 'answer', 42;
  $catch.get-cached: 'question', { "why?" };
  $cache.exists: 'answer';          # true
  $cache.get: 'answer';             # 42
  $cache.remove: 'answer';
  $cache.get('question');           # why?
  
  ```
  
  # DESCRIPTION
  
  This module provides simple key-value storage using the filesytem.
  
  Each key is stored in a separate file. The filename is a SHA1 of the key. If the key not a string or numeric, then it is serialized using `.raku` before taking the sha.
  
  Serialization of the value is done using `.raku` and deserialization is done using `.EVAL`.
  
  Storage is done with atomic write-and-rename, so depends on a filesystem that has those semantics. The age of the key is also filesytem dependent.
  
  Note that the key is not stored, so there's no way to get a list of keys. However it is possible to get a list of "entries", which are objects that include their age, storage path, and value (see Cache::Dir::Entry below).
  
  # METHODS
  
  ## method get-cached
  
  ```
  method get-cached($key, $val) returns Mu
  method get-cached($key, &v) returns Mu
  
  ```
  
  Return a value if it has been stored, or store the provided value. If the value is a routine, it is called.
  
  ## method get
  
  ```
  method get($key) returns Mu
  method get($key, $val) returns Mu
  method get($key, &v) returns Mu
  
  ```
  
  Get a value with a provided default (but don't store).
  
  ## method store
  
  ```
  method store($key, $value) returns Mu
  method store($key, &v) returns Mu
  
  ```
  
  Store a value for a key. If the value is a routine, the result of calling it is stored.
  
  ## method remove
  
  ```
  method remove($key) returns Mu
  
  ```
  
  Remove a key from the cache.
  
  ## method exists
  
  ```
  method exists($key) returns Bool
  
  ```
  
  Check if a key exists in the cache.
  
  ## method age-seconds
  
  ```
  method age-seconds($key) returns Int
  
  ```
  
  Return the number of seconds since the key was last modified.
  
  ## method flush
  
  ```
  method flush returns Mu
  
  ```
  
  Remove all entries from the cache.
  
  ## method get-entries
  
  ```
  method get-entries returns Array
  
  ```
  
  Return a list of Cache::Dir::Entry objects, which can be used to inspect and remove individual entries.
  
  # Cache::Dir::Entry
  
  ## method clear
  
  ```
  method clear returns Mu
  
  ```
  
  Remove the entry from the cache.
  
  ## method value
  
  ```
  method value returns Mu
  
  ```
  
  Return the value of the entry.
  
  ## method age-seconds
  
  ```
  method age-seconds returns Int
  
  ```
  
  Return the number of seconds since the entry was last modified.
  
  ## method modified
  
  ```
  method modified returns DateTime
  
  ```
  
  Return the last modified time of the entry.
  
  # AUTHOR
  
  Brian Duggan
  