#! /usr/bin/perl -w use strict; use Data::Dumper; use Storable; use Benchmark; use vars qw/$root $root1/; my $ddi = 0; # data dumper intent level, 0 = smallest files my $var; my $datafile = shift or die "No data file specified on command line.\n"; my $today = localtime(time); my $storefile = $datafile . '.store'; eval "require '$datafile'" or die "bad eval: $@\n"; $root = $root1; store $root, $storefile; my $debug = 0; sub via_eval_dump { eval "require '$datafile'" or die "bad eval: $@\n"; open DAT, ">$datafile" or die "Cannot open $datafile for output: $!\n"; $root = $root1; $root->{DATA}{NODE}[45]{'reputation'} += 1; $debug and print "$root->{DATA}{NODE}[45]{'content'} $root->{DATA}{NODE}[45]{'reputation'} \n"; $Data::Dumper::Indent = $ddi; $var = 'root'; $Data::Dumper::Varname = "$var"; print DAT Dumper($root); close DAT; } sub via_retrieve_store { $root = retrieve $storefile; $root->{DATA}{NODE}[45]{'reputation'} += 1; $debug and print "$root->{DATA}{NODE}[45]{'content'} $root->{DATA}{NODE}[45]{'reputation'} \n"; store $root, $storefile; } timethese shift(), { 'eval & dump' => \&via_eval_dump, 'retrieve & store' => \&via_retrieve_store, }