NAME

Package::Checkpoint - Checkpoint the scalar, array and hash values in a package for later restoration

VERSION

version 0.01

SYNOPSIS

package Foo::Bar {
  our $foo = 1;
  our @bar = (1,2,3);
  our %baz = ( a => 1 );
}

my $cp = Package::Checkpoint->new('Foo::Bar');

# modify Foo::Bar
$Foo::Bar::foo++;
push @Foo::Bar::bar, 4;
$Foo::Bar::baz{b} = 2;

$cp->restore;
# [$@%]Foo::Bar::{foo,bar,baz} are now back to their original values

DESCRIPTION

This module saves the scalars, array and hash variables inside a package. It doesn't save anything else, including anything in any sub-packages. The intent is if you are storing app configuration in a package, you can checkpoint the config, make changes, test those changes, and then restore the old values. Probably a better pattern would be to store the configuration in another type of object like a single hash variable, but sometimes that may not be an option due to the age and complexity of an application.

CONSTRUCTOR

new

my $cp = Package::Checkpoint->new($package);

Creates a checkpoint for a package, saving all of the scalar, array and hash values for later restoration.

METHODS

restore

$cp->restore;

Restores the scalar, array and hash values from the checkpoint.

CAVEATS

Doesn't checkpoint or even consider a whole host of values that might be of interest, like subroutines or file handles.

SEE ALSO

Package::Stash

AUTHOR

Graham Ollis <plicease@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021 by Graham Ollis.

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