Revision history for Perl extension File::Util.pm

   3.14_6
      Mon Sep 22 11:10:46 CDT 2003
      Changes to methods File::Util::list_dir() and
      File::Util::escape_filename() increase efficiency and fix some bugs.
      Both methods retain the same interface and return values in the same
      manner.

      Added new method File::Util::return_path() (see documentation).

      Method File::Util::last_mod changed to File::Util::last_modified for
      clarity, better readability, and consistency with other similar methods
      in the File::Util namespace. (eg- File::Util::last_access, etc)

      Added the following methods to @EXPORT_OK
         File::Util::return_path()
         File::Util::created()
         File::Util::last_access()
         File::Util::last_modified()

      Much more documentation added.  Test suite revisited to reflect changes
      to the methods mentioned above.

   3.14_2
      1/14/03, 12:05 am
      Much more documentation added.  Various methods slightly altered to stay
      in keeping with the docs and with standard conventions.  Test suite
      revisited somewhat.

   3.14_1
      1/2/03, 3:47 am
      Added a substantial amount of new documentation.  Spelling errors in
      documentation files corrected.

      Previously available method, File::Util::os(), has been dropped from the
      namespace and is no longer part of the module.

      Method File::Util::file_type() no longer includes the 'tty' keyword among
      its list of recognized file types, as the native Perl file test for
      divining a TTY file can only be used on open file handles.

      The keywords returned by this method are all upper case strings as of
      version 3.13_9, though the release notes for that version errantly did
      not include this statement.  The list of keywords otherwise remains
      unchanged:
         PLAIN       TEXT
         BINARY      DIRECTORY
         SYMLINK     PIPE
         SOCKET      BLOCK
         CHARACTER

   3.14_0
      12/27/02, 5:50 pm

      File::Util no longer @ISA Handy::Dandy, and no longer includes it
      as a prerequisite dependency.  Added a little more documentation,
      but it has a _long_ way to go as yet.

   3.13_9
      12/23/02, 3:22 pm

      A few small changes; no longer lists Handy::Dandy::TimeTools as a
      prerequisite dependency.

   3.13_8
      12/22/02, 11:31 pm

      Method File::Util::file_type() now returns a list instead of a single
      string of concatenated keyword substrings, the file type keywords being:
         plain       text
         binary      directory
         symlink     pipe
         socket      block
         character   tty

      Methods File::Util::load_file() and File::Util::open_handle() both will
      truly guarantee the uniqueness of the underlying file handle which is
      auto-generated, whereas before measures to achieve the uniqueness of
      the file handles were taken, but not verified.

      POD documentation got a big update.

   3.13_7
      12/6/02, 2:56 pm
      Almost ready for CPAN!

      License changed from the GNU LGPL to Perl's own licensing scheme.

      Various tweaks to compile-time sequences.

      Previously subroutines, SL and NL are now constants.  This makes them
      easier to use when importing them to your main program.  Instead of
      having to type "print('foo' . NL . NL)", you can type the more intuitive
      "print('foo' . NL x 2)".  The same applies for SL, though it's not likely
      you'll be wanting to print out more than one SL character in sequence.
      This shouldn't break previous usage of these exported names.

      Small reference material section appended to the general documentation
      file contained in 'docs-basic.txt' (part of this distribution)

   3.13_4
      11/14/02, 1:22 pm

      Got rid of all variables in @EXPORT_OK, namely:
         $OS
         $EBCDIC
         $NL
         $SL

      I wanted to export only methods, seeing as exporting variables just isn't
      right, no matter how convenient it might be.  There are two new methods,
      and they are both autoloaded, namely:
         File::Util::os()
         File::Util::ebcdic()

      These two methods take no arguments, and return only the value of the
      previously EXPORT_OK'ed "$OS" and "$EBCDIC"

      Added more thorough testing to distribution tests lineup, and an
      additional set of tests in an automated "empty subclass test" of the
      modules native methods and all those it inherits from its ancestral
      classes.

      More flock() related tweaking in private methods that implement
      File::Util's automatic, transparent file locking mechanism.

   3.13_3
      11/13/02, 9:41 pm

      Slightly optimized recursive directory listing features of package method
      File::Util::list_dir() and moved less-used method File::Util::load_dir()
      to AUTOLOAD.

      Got rid of stupid method File::Util::EB which was previously
      used for error bracketing around dynamic values quoted in error messages;
      this has nothing to do with file handling -the purpose of this module.

      Global vars $AUTOLOAD and $ATL are gone, since moving to the use of Perl's
      native AUTOLOAD extension from the old autoloading mechanism.

      Added/removed functionality tests in the distribution installer according
      to these changes.

   3.13_1
      11/13/02, 1:40 am

      Fixed problem that caused File::Util to not recognize its set flock
      usage policy, and flock failthrough rule set when either was manually
      set during runtime.  Added more flock tests to distribution test scripts.

   3.13_1
      11/4/02, 12:28 pm

      Further preparations made to ready the module for PAUSE upload.

   3.13_0
      Method 'list_dir()' now recognizes a new option, '--ignore-case'.  When
      this option is included among the other arguments you pass in, the list
      of items returned will be sorted alphabetically from A to Z without
      respect to character case.

      Accordingly, when the '--ignore-case' option is used the contents of
      a directory that would normally appear ordered like the items in
      Example A would instead appear ordered like the items in the order of
      Example B.

         Example A. (default list order of directory contents)
            Changes   COPYING   MANIFEST   Makefile.PL   README   test.pl


         Example B. (case insensitive order)
            COPYING   Changes   Makefile.PL   MANIFEST   README   test.pl

   3.12_9
      10/27/02, 1:54 pm
      Various places where warnings were surfacing undesirably have been
      corrected.  General preparations made to upload File::Util to PAUSE and
      ultimately be included in the CPAN.

   3.12_7
      10/10/02, 11:56 pm
      Method 'list_dir_a()' no longer suffixes directory items with the
      system path separator by force.

   3.12_6
      10/4/02, 4:22 am
      Fixed serious problem with flock() wrapper which was previously not
      working at all when global setting '--fatals-as-status' or global
      setting '--fatals-as-warning' were used.  An upgrade to the present
      release of File::Util from versions predating this release (3.12_6) is
      seriously recommended!

   3.12_5
      10/1/02, 7:46 pm
      More performance improvements.

      New argument flags recognized by method 'new':
         '--fatals-as-warning'   The new File::Util object will CORE::warn()
                                 about otherwise fatal errors instead of
                                 failing and exiting the process.

         '--fatals-as-status'    The new File::Util object will return(undef)
                                 to method calls that would otherwise cause
                                 fatal errors.

      Method 'write_file' now recognizes the argument flag,
      '--empty-writes-OK', as an alternative means of allowing the
      creation of empty files without reaping a nasty fatal error.  Up
      until now, setting $File::Util::empty_writes to a true value was the
      only way to accomplish this.

   3.12_4
      9/23/02, 2:30 pm
      Fixed 'deep recursion' problem in AUTOLOAD

   3.12_3
      9/23/02, 1:18 pm
      Added AUTOLOAD and moved lots of methods away into space.  They get
      AUTOLOAD-ed when needed, but not compiled as routines in the module.
      This greatly improves compile-time and run-time performance now.
      Got rid of methods 'get()' and 'set()'; they're largely useless.
      Got rid of variable '$File::Util::canhackit'; no longer used.

   3.12_2
      9/11/02, 12:35 am
      Moved to OOorNO interface design in order to provide both an Object-
      Oriented and a Procedural (non-Object-Oriented) programming style
      interface to File::Util.

   1.10
      Thursday, March 14, 2002,  1:29:55 AM
      Constants are now class attributes independent of the constructor method.
      File::Util objects should always get these constants regardless.

      Constants and OS identification extended upon code from CGI.pm v.2.78
      (go Lincoln, it's your birthday, get busy...) as such, File::Util got path
      separator help to better support a wider variety of platforms.

      Additionally, constants contributed to a major overhaul of how File::Util
      handles newlines.

   1.09
      Thursday, March 14, 2002,  1:29:55 AM
      Error messages got their own place as predefined key-value pairs in an
      anonymous hash independent of any class methods.  eg-they are committed to
      memory at compile time for speedy destruction of intentionally halted
      processes.

   1.07
      Saturday, February 9, 2002,  3:32:57 PM
      new method: File::Util::open_handle.  This method lets user pass a
      typeglob reference (eg- *TYPG) and in return the user will get back a new
      file handle which is opened to the filename of their specifications.

   1.06
      Tuesday, February 5, 2002,  9:47:35 AM
      Fixed a bug in File::Util::stamp() which made times during the hour of
      12:00 PM appear with the 'AM' suffix rather than the correct 'PM suffix.

      Added a new format type to File::Util::stamp() called 'file' or 'filename'
      which returns a timestamp suitable for placing into the name of a file
      in order to archive old files or versions of code with a time/date stamp
      embedded into the filename for easy lookup.

   1.05
      Wednesday, December 5, 2001,  1:36:48 AM
      Added a few more methods of the same nature as File::Util::size().  Passing
      in a format keyword argument returns a formatted timestamp.  Format
      keywords described in detail within the overview entry for previous
      version 1.02.  Now an overview of new methods:

      File::Util::created([filename][format])

         returns the creation time of the file in seconds since the epoch.  The
         value returned is then passed back in the same format as the value
         returned from a call to Perl's built-in function: time()

         consequently, the value returned is suitable for feeding to
         localtime, or any private methods and functions expecting the same
         type of input.

         As such, a call to this method on a file which was created at:
         Thursday, December 6, 2001,  4:27:57 PM
      ...would return the value: 1007684877

      File::Util::last_mod([filename][format])

         Returns the last modified time of the file you pass to it in seconds
         since the epoch.  Just as with the new created() method described
         above, the value returned comes in the same format as the value
         returned from a call to time(), and is therefore suitable for feeding
         to localtime() or any other private function or method expecting input
         of the same type.

         As such, a call to this method on a file which was last modified at:
         Sunday, December 2, 2001, 12:05:21 AM
      ...would return the value: 1007280321

      File::Util::last_access([filename][format])

         Same as the two previously described methods, only this method returns
         the number of seconds since the epoch to the time when the specified
         file was last accessed.

         As such, a call to this method on a file which was last accessed at:
         Thursday, December 6, 2001, 12:00:00 AM
      ...would return the value: 1007625600

   1.04
      Wednesday, December 5, 2001,  1:36:48 AM
      Fixed some of the checks on files for existence, added the
      File::Util::file_size([filename]) method which returns the size of the
      filename you pass as the only argument.

   1.03
      Thursday, November 29, 2001, 12:54:07 AM
      Re-visited the time/date methods to work out a bug which was causing file
      creation and last-modified times to be returned with incorrect values.

   1.02
      Tuesday, November 27, 2001,  2:23:55 PM
      More directory listing options.  Method File::Util::stamp() now takes
      optional format keyword argument; it lets you choose between different
      output formats for the returned time stamp.  Format keywords are thus:

      --short                 5/15/02, 4:22 pm
      --formal                Saturday, June 15, 2002, 4:22 pm
      --long                  same as '--formal'
      --succinct              Sat 5/15/02 16:22:43
      --ISO                   Sat, 15 Jun 2002 16.22.43 GMT
      --filename              -June-15-2002-16.22.43
      --file                  same as '--filename'
      --mdy                   5/15/02
      --hm                    4:22 pm
      --hms                   4:22:43 pm
      --24hms                 16:22:43
      --dayofmonth            15
      --dayofyear             134 (1 - 365)
      --dayofweek             Saturday
      --dayofweek, --num      7
      --month                 June
      --month, --num          6
      --year                  2002
      --shortyear             02
      --minute                22
      --hour                  16 (0 - 24)
      --second                43

   1.01
      Wednesday, November 21, 2001,  4:00:00 PM
      All methods now include very detailed error messages and a stack trace
      to help quickly track down mistakes.  You can fix mistakes now without
      having to decipher some cryptic error message which no one can understand
      and whose origin one can guess  :o(

   1.00
      Sunday, September 23, 2001  4:18:30 PM
      Initial release of File::Util.pm

