NAME

Text::FileTree - convert a list of files with full paths to a tree

DESCRIPTION

A file list can be organized in a number of ways. The two that most probably comes to mind is a "state free" way, where each file is listed with full path and doesn't depend on its context. The find command outputs files in this way.

There is also the "stateful" way of display file lists, where each file is sorted by its common parents. E.g., instead of

foo/bar
foo/baz

you might have the following structure instead:

foo/
  bar
  baz

This module does just that, converts a "plain" file listing in to the "stateful", directory sorted, way.

CONSTRUCTOR

my $ft     = Text::FileTree->new( );
my $ft_w32 = Text::FileTree->new( platform => 'Win32' );

Create a FileTree parser object. By default, it assume the files are in the platform native format, but this can be overriden. Internally, File::Spec is used, but by specifiying a platform parameter File::Spec::<platform> is used instead.

METHODS

parse

from_file

Load the file list from a file.

from_fh

Load the file list from a filehandle (or a filename). Examples:

open(my $pipe, '-|', 'find', '/');
Text::FileTree->new->from_fh($pipe);

AVAILABILITY AND BUG REPORTING

Latest released version is available through CPAN. Latest development version is available on github:

We use Github for issue tracking and pull requests.

If you don't have an account on Github (or for other reason don't want to use Github), we are ok with bugs filed on rt.cpan.org as well.

KNOWN BUGS AND LIMITATIONS

This module does not separate between a file and a directory. This only affects leaf nodes, as you can deduce that a file with children is indeed a directory. This is unlikely to be fixed, as there is really no way of distinguish them in, say, the output from find. Often, you should be able to determine this by context: e.g. by giving find the -type f flag --- now all leaf nodes are regular files.

COPYRIGHT

Copyright (c) 2012 - Olof Johansson <olof@cpan.org> All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.