| Catmandu::FileStore(3pm) | User Contributed Perl Documentation | Catmandu::FileStore(3pm) |
Catmandu::FileStore - Namespace for packages that can make files persistent
# From the command line
# Export a list of all file containers
$ catmandu export File::Simple --root t/data to YAML
# Export a list of all files in container '1234'
$ catmandu export File::Simple --root t/data --bag 1234 to YAML
# Add a file to the container '1234'
$ catmandu stream /tmp/myfile.txt to File::Simple --root t/data --bag 1234 --id myfile.txt
# Download the file 'myfile.txt' from the container '1234'
$ catmandu stream File::Simple --root t/data --bag 1234 --id myfile.txt to /tmp/output.txt
# Delete the file 'myfile.txt' from the container '1234'
$ catmandu delete File::Simple --root t/data --bag 1234 --id myfile.txt
# From Perl
use Catmandu;
my $store = Catmandu->store('File::Simple' , root => 't/data');
# List all containers
$store->index->each(sub {
my $container = shift;
print "%s\n" , $container->{_id};
});
# Add a new container
$store->index->add({ _id => '1234' });
# Get the container
my $files = $store->index->files('1234');
# Add a file to the container
$files->upload(IO::File->new('<foobar.txt'), 'foobar.txt');
my $file = $files->get('foobar.txt');
# Stream the contents of a file
$files->stream(IO::File->new('>foobar.txt'), $file);
# Delete a file
$files->delete('foobar.txt');
# Delete a container
$store->index->delete('1234');
Each Catmandu::FileStore is a Catmandu::Store and inherits all its methods,
A Catmandu::FileStore is package to store and retrieve binary content in an filesystem, memory or a network. A "Catmandu::FileStore" contains one or more "Catmandu::FileBag" which is a kind of folder.
Each "Catmandu::FileBag" contains one or more files.
One special "Catmandu::FileBag" is the "index" and contains the listing of all "Catmandu::FileBag" in the "Catmandu::FileStore".
my $index = $store->index;
$index->each(sub {
my $bag = shift;
printf "%s\n" , $bag->{_id};
});
Create or retieve a bag with name $name. Returns a Catmandu::FileBag.
Returns the index Catmandu::FileBag for the Catmandu::FileStore.
my $index = $store->index;
# Add a new file container
$index->add({ _id => '1234'});
# Anf use it...
my $container = $store->bag('1234');
$container->upload(IO::File->new('data.txt') , 'data.txt');
Return the current logger. Can be used when creating your own Stores.
E.g.
package Catmandu::Store::Hash;
...
sub generator {
my ($self) = @_;
$self->log->debug("generating record");
...
}
See also: Catmandu for activating the logger in your main code.
Patrick Hochstenbach, "<patrick.hochstenbach at ugent.be>"
Nicolas Steenlant, "<nicolas.steenlant at ugent.be>"
Nicolas Franck, "<nicolas.franck at ugent.be>"
Catmandu::Store::File::Simple, Catmandu::Store::File::Memory, Catmandu::FileBag
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See <http://dev.perl.org/licenses/> for more information.
| 2020-05-22 | perl v5.30.2 |