
=pod

=head1 NAME

 AnyData::Storage::File -- manipulate files with rich warnings

=head1 DESCRIPTION

 Opens, reads from, writes to, creates and destroys files with numerous
 options for error handling, flocking, binmode, etc.

 The simplest form is the equivalent of

       my $f    = AnyData::Storage::File->new(dirs=>\@dirs,flock=>1);
       my $str1 = $f->adSlurp($file);

       
       for( @dirs ) {
           open(IN,$file) or die $!;
       }
       sub slurp {
           local *IN;
           local $/ = undef;
       }

 But, depending on how you set the default behaviour

=head1 SYNOPSIS

 use AnyData;
 my $f = AnyData::Storage::File->new;
 $f->set('binmode',1|0);
 $f->set('PrintError',1|0);
 $f->set('RaiseError',1|0);
 $f->set('Trace',1|0);
 $f->set('f_dir',$dir|$dir_array)

<  input, fail if doesn't exist
>  output, truncate if exists, create if doesn't
>> append, create if doesn't exist
+< read/write, fail if doesn't exist

r  = <
r+ = 


=head1 new()

 my $f = AnyData::Storage::File->new;

 or

 my $f = AnyData::Storage::File->new( %flags );

 %flags is a hash which can contain any or all of:

     f_dir      => $directory,   # defaults to './' (
     binmode    => $binmode,     # defaults to 0 (doesn't binmode files)
     printError => $warnings,    # defaults to 1 (print warning on errors)


=head1 open_local_file( $fname, $mode );

 Mode is one of

 a = append     open for reading & writing, create if doesn't exist
 r = read       open for reading, fail if doesn't exist
 u = open       open for reading & writing, fail if doesn't exist
 c = create     open for reading & writing, fail if it already exists
 o = overwrite  open for reading & writing, overwrite if it already exists

 Additionally, all modes fail if the file can't be opened.  On systems
 that support flock, 'r' fails if a shared lock can not be obtained; the
 other modes fail if an exclusive lock can't be obtained.

=cut

