File::TreeBuilder - Build simple trees of files and directories.


version 0.02


    use File::TreeBuilder qw(build_tree);

    our $contents_str = 'Bla';

    build_tree($some_dir, q{
        / "D2"
            . "F_in_D2", "contents"
        . "F_in_top"
        / "D1 with spaces"
            . "F_in_D1", $contents_str
            . "F with spaces in D1", $contents_str

That creates the following directory structure:

        "D1 with spaces"/
            F_in_D1    # Contains 'Bla'.
            "F with spaces in D1" # Contains 'Bla'.
            F_in_D2    # Contains 'contents'.
        F_in_top       # Empty file (0 bytes).


This module is used for building small trees of files and directories by describing what is needed in a text string.


build_tree ($dir, $str)

Builds a tree of directories and files under $dir according to the given $str. Returns an empty string if successful, an error message otherwise. See the SYNOPSIS for example usage.

In $str, blank or empty lines or lines whose first non-blank character is a pound sign (#) are ignored. Lines beginning with a slash (/) indicate directories to be created, while dots (.) indicate files. Directories are created hierarchically, according to the indentation. Files are created in the directory hierarchically above them. Anything that follows the filename on the line will be evaluated and placed in the file as its contents.


Evaluated strings must not use lexicals, only package variables: use our instead of my.
If lines are indented bizarrely, you may get bizarre results.
Use spaces only or tabs only to indent. Mixing the two may confuse the parser.


None by default.


Luc St-Louis <>


This software is copyright (c) 2011 by Luc St-Louis.

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