|
Packit |
14c646 |
#!perl -w
|
|
Packit |
14c646 |
use strict;
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
our $file = "storable-testfile.$$";
|
|
Packit |
14c646 |
die "Temporary file '$file' already exists" if -e $file;
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
END { while (-f $file) {unlink $file or die "Can't unlink '$file': $!" }}
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
use Storable qw (store retrieve freeze thaw nstore nfreeze);
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
sub slurp {
|
|
Packit |
14c646 |
my $file = shift;
|
|
Packit |
14c646 |
local (*FH, $/);
|
|
Packit |
14c646 |
open FH, "<", $file or die "Can't open '$file': $!";
|
|
Packit |
14c646 |
binmode FH;
|
|
Packit |
14c646 |
my $contents = <FH>;
|
|
Packit |
14c646 |
die "Can't read $file: $!" unless defined $contents;
|
|
Packit |
14c646 |
return $contents;
|
|
Packit |
14c646 |
}
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
sub store_and_retrieve {
|
|
Packit |
14c646 |
my $data = shift;
|
|
Packit |
14c646 |
unlink $file or die "Can't unlink '$file': $!";
|
|
Packit |
14c646 |
local *FH;
|
|
Packit |
14c646 |
open FH, ">", $file or die "Can't open '$file': $!";
|
|
Packit |
14c646 |
binmode FH;
|
|
Packit |
14c646 |
print FH $data or die "Can't print to '$file': $!";
|
|
Packit |
14c646 |
close FH or die "Can't close '$file': $!";
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
return eval {retrieve $file};
|
|
Packit |
14c646 |
}
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
sub freeze_and_thaw {
|
|
Packit |
14c646 |
my $data = shift;
|
|
Packit |
14c646 |
return eval {thaw $data};
|
|
Packit |
14c646 |
}
|
|
Packit |
14c646 |
|
|
Packit |
14c646 |
1;
|