NAME
FileHandle::Rollback - FileHandle with commit and rollback
SYNOPSIS
use FileHandle::Rollback;
my ($fh);
# open file handle
$fh = FileHandle::Rollback->new("+< $path")
or die "cannot open filehandle: $!";
# put some data at a specific address
$fh->seek(80, 0);
print $fh '1500';
# read some data, partially including data
# that was written in this rollback segment
$fh->seek(70, 0);
$fh->read($data, 100);
# if you want to cancel the changes:
$fh->rollback;
# or, if you want save the changes:
$fh->commit;
DESCRIPTION
FileHandle::Rollback allows you to open a filehandle, write data to that handle, read the data back exactly as if it were already in the file, then cancel the whole transaction if you choose. FileHandle::Rollback works like FileHandle, with a few important differences, most notably the addition of rollback()
and commit()
. Those additions and differences are noted below.
$fh->rollback()
Cancels all changes since the last rollback, commit, or since you opened the file handle.
$fh->commit()
Writes changes to the file.
$fh->commit(flock, $mode)
The flock method locks the file like the built-in flock command. Use the same mode arguments: LOCK_SH
, LOCK_EX
, and LOCK_UN
.
use Fcntl ':flock';
unless ($fh->flock(LOCK_EX))
{die "cannot lock filehandle: $!"}
binmode
FileHandle::Rollback only works in binmode, so it will automatically put itself into binmode.
read/write
FileHandle::Rollback only works in read/write mode. Regardless of what you begin the file path with (+<, +>, >, >>, etc) FileHandle::Rollback opens the file with +< . However, if > is anywhere in the path then FileHandle::Rollback will create the file if it doesn't already exist.
TERMS AND CONDITIONS
Copyright (C) 2002 Miko O'Sullivan
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
AUTHOR
Miko O'Sullivan miko@idocs.com
VERSION
Version 1.00 June 29, 2002