NAME
Tree::FSMethods - Perform filesystem-like operations on object tree(s)
VERSION
This document describes version 0.001 of Tree::FSMethods (from Perl distribution Tree-FSMethods), released on 2020-02-13.
SYNOPSIS
use Tree::FSMethods;
my $fs = Tree::FSMethods->new(
tree => $tree,
# tree2 => $other_tree,
# filename_method => 'filename',
);
Listing files:
# list top-level (root)
my %nodes = $fs->ls; # ("foo"=>{...}, "bar"=>{...}, "baz"=>{...})
# specify path. will list all nodes under /proj.
my %nodes = $fs->ls("/proj");
# specify wildcard. will list all nodes under /proj which has 'perl' in their
# names.
my %nodes = $fs->ls("/proj/*perl*");
DESCRIPTION
METHODS
new
Usage:
my $fs = Tree::FSMethods->new(%args);
Arguments:
tree
Optional. Object. The tree node object. A tree node object is any regular Perl object satisfying the following criteria: 1) it supports a
parent
method which should return a single parent node object, or undef if object is the root node); 2) it supports achildren
method which should return a list (or an arrayref) of children node objects (where the list/array will be empty for a leaf node). Note: you can use Role::TinyCommons::Tree::Node to enforce this requirement.tree2
See
tree
.filename_method
Optional. String or coderef.
By default, will call
filename
method on tree node to get the filename of a node. If that method is not available, will usetitle
method. If that method is also not available, will use its "hash address" given by the stringification, e.g. "HASH(0x56242e558740)" or "Foo=HASH(0x56242e558740)".If
filename_method
is specified and is a string, will use the method specified by it.If
filename_method
is a coderef, will call the coderef, passing the tree node as argument and expecting filename as the return value.If filename is empty, will use "unnamed".
If filename is non-unique (in the same "directory"), will append ".2", ".3", ".4" (and so on) suffixes.
cd
Usage:
$fs->cd($path_wildcard);
Change working directory. Dies on failure.
cwd
Usage:
my $cwd = $fs->cwd;
Return current working directory.
ls
Usage:
my %res = $fs->ls( [ $path_wildcard, ... ]);
Dies on failure (e.g. can't cd to specified path).
cp
Usage:
$fs->cp($src_path_wildcard, $target_path);
Copies nodes from tree
to tree2
(or tree
, if tree2
is not loaded). Dies on failure (e.g. can't find source or target path).
Examples:
$fs->cp("proj/*perl*", "proj/");
This will set nodes under proj/
in the source tree matching wildcard *perl*
to proj/
in the target tree.
mkdir
Usage:
$fs->mkdir([ \%opts, ] $path);
mv
Usage:
$fs->mv($src_path, $target_path);
Moves nodes from tree
to tree2
(or tree
, if tree2
is not loaded). Dies on failure (e.g. can't find source or target path).
rm
Usage:
$fs->rm($path_wildcard);
showtree
Usage:
my $str = $fs->showtree([ $starting_path ]);
Like the DOS tree command, will return a visual representation of the "filesystem", e.g.:
file1
file2
|-- file3
|-- file4
| |-- file5
| \-- file6
\-- file7
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Tree-FSMethods.
SOURCE
Source repository is at https://github.com/perlancar/perl-Tree-FSMethods.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Tree-FSMethods
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
SEE ALSO
AUTHOR
perlancar <perlancar@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2020 by perlancar@cpan.org.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.