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.
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.
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.
$obj
->file(
'file1'
)->s.
"\n"
;
# Relative path to file2.
$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.
$obj
->dir(
'dir1'
)->s.
"\n"
;
# Relative path to dir2.
$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
LICENSE AND COPYRIGHT
© 2009-2023 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.18