home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 May / Chip_2000-05_cd1.bin / zkuste / Perl / ActivePerl-5.6.0.613.msi / 䆊䌷䈹䈙䏵-䞅䞆䞀㡆䞃䄦䠥 / _8d0e961ce39419293e00dc99f8e91cd6 < prev    next >
Text File  |  2000-03-23  |  4KB  |  104 lines

  1.  
  2. <HTML>
  3. <HEAD>
  4. <TITLE>IO::AtomicFile - write a file which is updated atomically</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../Active.css" TYPE="text/css">
  6. <LINK REV="made" HREF="mailto:">
  7. </HEAD>
  8.  
  9. <BODY>
  10. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  11. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  12. <STRONG><P CLASS=block> IO::AtomicFile - write a file which is updated atomically</P></STRONG>
  13. </TD></TR>
  14. </TABLE>
  15.  
  16. <A NAME="__index__"></A>
  17. <!-- INDEX BEGIN -->
  18.  
  19. <UL>
  20.  
  21.     <LI><A HREF="#name">NAME</A></LI><LI><A HREF="#supportedplatforms">SUPPORTED PLATFORMS</A></LI>
  22.  
  23.     <LI><A HREF="#synopsis">SYNOPSIS</A></LI>
  24.     <LI><A HREF="#description">DESCRIPTION</A></LI>
  25.     <LI><A HREF="#author">AUTHOR</A></LI>
  26.     <LI><A HREF="#revision">REVISION</A></LI>
  27. </UL>
  28. <!-- INDEX END -->
  29.  
  30. <HR>
  31. <P>
  32. <H1><A NAME="name">NAME</A></H1>
  33. <P>IO::AtomicFile - write a file which is updated atomically</P>
  34. <P>
  35. <HR>
  36. <H1><A NAME="supportedplatforms">SUPPORTED PLATFORMS</A></H1>
  37. <UL>
  38. <LI>Linux</LI>
  39. <LI>Solaris</LI>
  40. <LI>Windows</LI>
  41. </UL>
  42. <HR>
  43. <H1><A NAME="synopsis">SYNOPSIS</A></H1>
  44. <PRE>
  45.     use IO::AtomicFile;
  46. </PRE>
  47. <PRE>
  48.  
  49.     # Write a temp file, and have it install itself when closed:
  50.     my $FH = IO::AtomicFile->open("bar.dat", "w");
  51.     print $FH "Hello!\n";
  52.     $FH->close || die "couldn't install atomic file: $!";</PRE>
  53. <PRE>
  54.  
  55.     # Write a temp file, but delete it before it gets installed:
  56.     my $FH = IO::AtomicFile->open("bar.dat", "w");
  57.     print $FH "Hello!\n";
  58.     $FH->delete;</PRE>
  59. <PRE>
  60.  
  61.     # Write a temp file, but neither install it nor delete it:
  62.     my $FH = IO::AtomicFile->open("bar.dat", "w");
  63.     print $FH "Hello!\n";
  64.     $FH->detach;</PRE>
  65. <P>
  66. <HR>
  67. <H1><A NAME="description">DESCRIPTION</A></H1>
  68. <P>This module is intended for people who need to update files 
  69. reliably in the face of unexpected program termination.</P>
  70. <P>For example, you generally don't want to be halfway in the middle of
  71. writing <EM>/etc/passwd</EM> and have your program terminate!  Even
  72. the act of writing a single scalar to a filehandle is <EM>not</EM> atomic.</P>
  73. <P>But this module gives you true atomic updates, via rename().
  74. When you open a file <EM>/foo/bar.dat</EM> via this module, you are <EM>actually</EM> 
  75. opening a temporary file <EM>/foo/bar.dat..TMP</EM>, and writing your
  76. output there.   The act of closing this file (either explicitly
  77. via close(), or implicitly via the destruction of the object)
  78. will cause <A HREF="../../../lib/Pod/perlfunc.html#item_rename"><CODE>rename()</CODE></A> to be called... therefore, from the point
  79. of view of the outside world, the file's contents are updated
  80. in a single time quantum.</P>
  81. <P>To ensure that problems do not go undetected, the ``close'' method
  82. done by the destructor will raise a fatal exception if the <A HREF="../../../lib/Pod/perlfunc.html#item_rename"><CODE>rename()</CODE></A>
  83. fails.  The explicit <A HREF="../../../lib/Pod/perlfunc.html#item_close"><CODE>close()</CODE></A> just returns undef.</P>
  84. <P>You can also decide at any point to trash the file you've been 
  85. building.</P>
  86. <P>
  87. <HR>
  88. <H1><A NAME="author">AUTHOR</A></H1>
  89. <P>Eryq (<EM><A HREF="mailto:eryq@zeegee.com">eryq@zeegee.com</A></EM>).
  90. President, ZeeGee Software Inc (<EM><A HREF="http://www.zeegee.com">http://www.zeegee.com</A></EM>).</P>
  91. <P>
  92. <HR>
  93. <H1><A NAME="revision">REVISION</A></H1>
  94. <P>$Revision: 1.104 $</P>
  95. <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
  96. <TR><TD CLASS=block VALIGN=MIDDLE WIDTH=100% BGCOLOR="#cccccc">
  97. <STRONG><P CLASS=block> IO::AtomicFile - write a file which is updated atomically</P></STRONG>
  98. </TD></TR>
  99. </TABLE>
  100.  
  101. </BODY>
  102.  
  103. </HTML>
  104.