#!/usr/bin/env perl use strict; use warnings; use DB_File::Lock; my $fileName = "/tmp/cache.db"; my %data; my $locking = { 'mode' => 'write', 'nonblocking' => 0, 'lockfile_name' => $fileName."lock", 'lockfile_mode' => 0600, }; unless (-e $fileName) { print "creating $fileName\n"; tie(%data, 'DB_File::Lock', $fileName, O_CREAT, 0664, $DB_HASH, $locking); untie(%data); } print "re-opening $fileName\n"; tie %data, 'DB_File::Lock', $fileName, O_RDWR, 0664, $DB_HASH, $locking or die "Error tieing file $fileName: $!"; my $time = $data{"time"}; print "found foo=".$data{"foo"}."\n" if exists $data{"foo"}; print "found time=".$data{"time"}."\n" if exists $data{"time"}; $data{"foo"} = "bar"; $data{"time"} = time(); untie(%data);