Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
persistant application data storage
Perl
tag: 0.01

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib/App
t
.gitignore
Build.PL
Changes
MANIFEST
MANIFEST.SKIP
README

README

NAME
    App::Stash - persistant application data storage

SYNOPSIS
        use App::Stash;
        $stash = App::Stash->new({application => "test"});
        $stash->data->{'test'} = 1;
        $stash->d->{'test'} = 1;

    after new run:

        use App::Stash;
        $s=App::Stash->new({application => "test"});
        print $s->data->{'test'}, "\n";
        print $s->dao->test, "\n";

WARNING
    experimental, use on your own risk :-)

DESCRIPTION
    The purpose of the module is to transparently save stash data
    (structure) across application (script) execution. The save is done in
    DESTROY method. This has certain limitations. Basically make sure you
    never store object in the data as this one may get destraoyed before
    App::Stash object does.

    The module+style is inspired by App::Cache. Unlike App::Cache it usese
    JSON::Util for storage and not Storable. The stash is saved to
    $HOME/.app-name/stash.json. It is in the "pretty" format so it should be
    easy to read and edit. I wanted to go with Storable but using it in
    DESTROY method causes `Segmentation fault' on my Perl.

    Warn: no file locking in place, use Proc::PID::File or similar to have
    just one instance of program running or send a wishlist bugreport and
    wait for implementation of stash file locking. :)

PROPERTIES
        application
        directory
        stash_filename

    See App::Cache for a descrition of `application' and `directory'.
    `stash_filename' is the full path to the file where stash data will be
    stored. All three are optional.

METHODS
  new()

    Object constructor.

  d

    Shortcut for data.

  data

    Returns reference to the stash data.

  dao

    Returns data passed to Data::AsObject. So basically the data structure
    becomes an object. See Data::AsObject for details.

    Note: Data::AsObject is not compile time dependency. It will be used if
    installed. If not the exception will be thrown only when calling dao. So
    if you plan to use it, make it a dependency of your module/program.

  clear

    Will delete stash data and remove the file with the stash data from the
    disk.

  load

    Load stash data from disk. Called automaticaly by first call to data.
    Can be used to revert current stash data to the prexecution state.

  save

    Save stash data to disk - $HOME/.app-name/stash.json. Called
    automaticaly via DESTROY method when App::Stash object is going to be
    destroyed.

    Will throw an expection if the file save fails.

  DESTROY

    Calls save and prints warning if it fails.

SEE ALSO
    App::Cache

AUTHOR
    Jozef Kutej, `<jkutej at cpan.org>'

BUGS
    Please report any bugs or feature requests to `bug-app-stash at
    rt.cpan.org', or through the web interface at
    http://rt.cpan.org/NoAuth/ReportBug.html?Queue=App-Stash. I will be
    notified, and then you'll automatically be notified of progress on your
    bug as I make changes.

SUPPORT
    You can find documentation for this module with the perldoc command.

        perldoc App::Stash

    You can also look for information at:

    * RT: CPAN's request tracker
        http://rt.cpan.org/NoAuth/Bugs.html?Dist=App-Stash

    * AnnoCPAN: Annotated CPAN documentation
        http://annocpan.org/dist/App-Stash

    * CPAN Ratings
        http://cpanratings.perl.org/d/App-Stash

    * Search CPAN
        http://search.cpan.org/dist/App-Stash/

ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
    Copyright 2009 Jozef Kutej.

    This program is free software; you can redistribute it and/or modify it
    under the terms of either: the GNU General Public License as published
    by the Free Software Foundation; or the Artistic License.

    See http://dev.perl.org/licenses/ for more information.

Something went wrong with that request. Please try again.