The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mir::FileHandler - An Mir module to handle files and folders...

VERSION

Version 0.05

SYNOPSIS

    use Mir::FileHandler;

    # the oo way...
    # get a new FileHandler obj for the passed root directory
    my $o = Mir::FileHandler->new( 
        path => $path, # root folder to start with 
    );

    # get plain files list inside the root directory
    my $list = $o->plainfiles(); # or pass a path in input

    # get plain files list from folder and sub-folders
    my $list = $o->plainfiles_recursive( $path, $suffix, \&found );

    # Traverses a directory tree and exec code for each file
    $o->dir_walk(
        path => $path,
        code => $code,
    );

    # Traverses a directory tree and exec code for each file
    # Stops after max success code execution
    # the sub pointed by $code has to return 1 in
    # case of success
    # if cached_dir is set, at each iteration starts from 
    # what stored in cache, if something has been stored,
    # otherwise starts from path
    $o->clear_cache(); # to clear current dir stored in cache
    $o->dir_walk_max(
        code => $code, # not mandatory, code to exec for each file found
        max  => $max  # not mandatory, max files successfully processed
    );

EXPORT

plainfiles
plainfiles_recursive

SUBROUTINES/METHODS

plainfiles

INPUT

    $path: path to look for (not mandatory, eventually takes the
            one passed at construction time)

OUTPUT

An ArrayRef

DESCRIPTION

Returns the list of folder plain files.

_pf

INPUT

    $path: the path to look for docs

OUTPUT

A sorted list of docs.

DESCRIPTION

Private function. Returns the sorted list of regular files in current folder.

_get_path_from_cache

INPUT

None

OUTPUT

The cache path or undef

DESCRIPTION

Tries to retrieve a current path cached for the root one or returns undef

dir_walk - traverses recursively a folder

INPUT

An hash with keys: code: a coderef to apply to each file

OUTPUT

-1 if root file or folder are not existent, else the number of valid files.

DESCRIPTION

Traverse a directory, triggering a sub for each file found. The sub should return 1 if file is good, 0 otherwise. It is meant to recursively process a folder in one shot. This is the minimal logic to traverse a tree, for added, features look at dir_walk_max.

_walk

INPUT

    $top: subtree root
    $code: code to execute against each valid file
    $count: number of valid files till now...

OUTPUT

The number of valid files.

DESCRIPTION

Traverse the subtree.

dir_walk_max - traverses recursively a folder, stops after max valid files found or all tree has been traversed

INPUT

An hash with keys: code: a coderef to apply to max: max number of items to evaluate

OUTPUT

-1 if root file or folder are not existent, else the number of valid files.

DESCRIPTION

Traverse a directory, triggering a sub for each file found. The sub should return 1 if file is good, 0 otherwise. The method stops when all files are consumed or max number of good files is reached.

_walk_max

INPUT

root : the root folder to start with count : number of valid items processed rel_path : the relative path from root max : max number of valid items code : code to run against each item

OUTPUT

The number of valid items processed

DESCRIPTION

Inner loop to analize each item of the tree. it calls recursively itself for each sub-tree. Ends when 1 of these conditions is met: - no more files found - max number of valid items reached this number is set to be 10 times the max number of valid items.

plainfiles_recursive

INPUT

    $path:      a path to start from.
    $avoid:     arrayref con lista risorse da evitare
    $suffix:    arrayref con lista suffissi da processare
    $found:     ref sub callback per ogni risorsa

OUTPUT

    An arrayref.

DESCRIPTION

    Returns recursively the list of all files from passed folder.

plainfiles_recursive_as_hash

INPUT

    $path : root path (not mandatory if already passed at 
            construction time)

OUTPUT

An HashRef.

DESCRIPTION

Recursively collects files in an hash indexed by file suffix.

plainfiles_recursive_of_type

INPUT

    @types: list of valid file suffixes

OUTPUT

    An ArrayRef or undef in case of errors.

DESCRIPTION

    Recursively collects all files with valid suffixes

process_dir

INPUT

    $dir    : dir to start with
    $suffix : arrayref of valid file suffixes
    $depth  : depth in processing subdirs

OUTPUT

    An arrayref

DESCRIPTION

    Workflow:
    get a single dir as input and the level of recursions
    get the list of valid dir files and process them
    get the list of dir direct subdirs
    depth-- 
    if depth > 0
        call process_dir foreach subdir

AUTHOR

Marco Masetti, <marco.masetti at softeco.it>

BUGS

Please report any bugs or feature requests to bug-ishare-filehandler at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Mir-FileHandler. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Mir::FileHandler

LICENSE AND COPYRIGHT

Copyright 2013 Marco Masetti.

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.