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