GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
File::Append::TempFile(3) User Contributed Perl Documentation File::Append::TempFile(3)

File::Append::TempFile - Perl extension for appending data to files

  use File::Append::TempFile;

  $f = new File::Append::TempFile();
  $f->begin_work('/etc/hosts') or die "Appending: ".$f->err();
  $f->add_line("127.0.0.2 localhvost\n");
  $f->commit();

  $f->begin_work('/etc/hosts') or die "Appending: ".$f->err();
  $f->add_line("...\n");
  $f->rollback();

The "File::Append::TempFile" module provides an OOP interface to appending data to files using a temporary file, in order to ensure the atomicity of the updates.

An append session is initiated by invoking the "begin_work()" method and passing it the name of the file. At this point, a temporary file is created in the same directory as the original file and the original's contents is copied to the temporary. More data is added to the temporary file using the "add_line()" method. When done appending, the "commit()" method will atomically move the temporary file over the original. If something goes wrong, the "rollback()" method will remove the temporary file without affecting the original in any way.

The "File::Append::TempFile" class defines the following methods:
new ()
Create a new "File::Append::TempFile" object. No file processing is done at this point.
err ( [MESSAGE] )
Set or obtain an error message describing the last error that occurred during the processing of the current "File::Append::TempFile" object.
diag ([FLAG])
Set or obtain the diagnostic output flag. If it is set, the methods will display diagnostic information on the standard error stream.
begin_work (FILENAME)
Creates a temporary file in the same directory as the specified one and copies the original's contents over to the new file. Further data may be added using the "add_line()" method and then either stored as the original with the "commit()" method, or discarded with the "rollback()" method.
add_line (DATA)
Append data to the temporary file. This does not affect the original in any way until "commit()" is invoked.
commit ()
Replace the original file with the temporary copy, to which data may have been added using "add_line()".

NOTE: This method uninitializes the "File::Append::TempFile" object, that is, removes any association between it and the original file and even file name! The next method invoked on this "File::Append::TempFile" object should be "begin_work()".

rollback ()
Discard all the changes made to the temporary copy and remove it. This does not affect the original file in any way.

NOTE: This method uninitializes the "File::Append::TempFile" object, that is, removes any association between it and the original file and even file name! The next method invoked on this "File::Append::TempFile" object should be "begin_work()".

There are also several methods used internally by the "File::Append::TempFile" routines:

debug (MESSAGE)
Display a diagnostic message to the standard error stream if the output of diagnostic messages has been enabled.
do_copy (ORIG TEMP)
Actually perform the copying of the original file data into the temporary file at "begin_work()" time. This allows derived classes to modify the file structure if needed.

The two parameters are the file handles for the original and the temporary file.

The "File::Append::TempFile" website:

  http://devel.ringlet.net/sysutils/file-append-tempfile/

Note that the original file may have changed between "begin_work()" and "commit()" - those changes will be lost!

Peter Pentchev, <roam@ringlet.net>

Copyright (C) 2006, 2015 Peter Pentchev.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.7 or, at your option, any later version of Perl 5 you may have available.

2015-11-16 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.