NAME
File::Object - Object system for filesystem paths.
SYNOPSIS
use File::Object;
my $obj = File::Object->new(%parameters);
my $self = $obj->dir(@dir);
my $self = $obj->file(@file_path);
my $dir = $obj->get_dir($dir_num);
my $file = $obj->get_file;
my $self = $obj->reset;
my $path = $obj->s;
my $self = $obj->set;
my $self = $obj->up($num);
DESCRIPTION
This provides an object oriented interface to file/directory paths, such
as actual, parent or explicit directory and relative paths to them.
METHODS
"new"
my $obj = File::Object->new(%parameters);
Constructor.
Constructor parameters are:
* "dir"
Directory path in reference to array.
Default value is [].
* "file"
File path.
Default value is undef.
* "type"
Type of path. Types:
- file
- dir
Default value is 'dir'.
Returns instance of object.
"dir"
my $self = $obj->dir(@dir);
Add directory or directories to object.
Returns instance of object.
"file"
my $self = $obj->file(@file_path);
Add file or directory/directories with file to object.
Returns instance of object.
"get_dir"
my $dir = $obj->get_dir($dir_num);
Default value of $dir_num is 1.
Returns $dir_num level directory.
"get_file"
my $file = $obj->get_file;
Returns:
- Filename if object is file path.
- undef if object is directory path.
"reset"
my $self = $obj->reset;
Reset to constructor values.
Returns instance of object.
"s"
my $path = $obj->s;
Serialize path and return.
Returns string.
"set"
my $self = $obj->set;
Set actual values to constructor values.
Returns instance of object.
"up"
my $self = $obj->up($num);
Go to upper directory/ies defined by $num count. Default value is one.
Returns instance of object.
ERRORS
new():
'dir' parameter must be a reference to array.
Bad 'type' parameter.
Bad file constructor with undefined 'file' parameter.
From Class::Utils::set_params():
Unknown parameter '%s'.
up():
Cannot go up.
PATH -> path;
EXAMPLE1
use strict;
use warnings;
use File::Object;
# Print actual directory path.
print File::Object->new->s."\n";
# Output which runs from /usr/local/bin:
# /usr/local/bin
EXAMPLE2
use strict;
use warnings;
use File::Object;
# Print parent directory path.
print File::Object->new->up->s."\n";
# Output which runs from /usr/local/bin:
# /usr/local
EXAMPLE3
use strict;
use warnings;
use File::Object;
# Object with directory path.
my $obj = File::Object->new(
'dir' => ['path', 'to', 'subdir'],
);
# Relative path to file1.
print $obj->file('file1')->s."\n";
# Relative path to file2.
print $obj->file('file2')->s."\n";
# Output:
# Unix:
# path/to/subdir/file1
# path/to/subdir/file2
# Windows:
# path\to\subdir\file1
# path\to\subdir\file2
EXAMPLE4
use strict;
use warnings;
use File::Object;
# Object with directory path.
my $obj = File::Object->new(
'dir' => ['path', 'to', 'subdir'],
);
# Relative path to dir1.
print $obj->dir('dir1')->s."\n";
# Relative path to dir2.
print $obj->reset->dir('dir2')->s."\n";
# Output:
# Unix:
# path/to/subdir/dir1
# path/to/subdir/dir2
# Windows:
# path\to\subdir\dir1
# path\to\subdir\dir2
DEPENDENCIES
Class::Utils, Error::Pure, FindBin, File::Spec::Functions.
SEE ALSO
File::Fu
file and directory objects
File::Spec
portably perform operations on file names
IO::All
IO::All to Larry Wall!
Path::Class
Cross-platform path specification manipulation
Path::Tiny
File path utility
REPOSITORY
<https://github.com/michal-josef-spacek/File-Object>
AUTHOR
Michal Josef Špaček <mailto:skim@cpan.org>
<http://skim.cz>
LICENSE AND COPYRIGHT
© 2009-2023 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.18