SYNOPSIS

my %tree_structure = ( dir_1 => { subdir_1 =>{}, file_1 =>[], file_a => [], }, dir_2 => { subdir_2 => { file_22 =>[], file_2a =>[], }, file_2 =>[], file_a =>['12345'], file_b =>[], },

file_0 => [] , ) ;

use Directory::Scratch::Structured qw(create_structured_tree) ; my $temporary_directory = create_structured_tree(%tree_structure) ;

or

use Directory::Scratch ; use Directory::Scratch::Structured qw(piggyback_directory_scratch) ;

my $temporary_directory = Directory::Scratch->new; $temporary_directory->create_structured_tree(%tree_structure) ;

DESCRIPTION

This module adds a create_structured_tree subroutine to the Directory::Scratch.

DOCUMENTATION

I needed a subroutine to create a bunch of temporary directories and files while running tests. I used the excellent Directory::Scratch to implement such a functionality. I proposed the subroutine to the Directory::Scratch author but he preferred to implement a subroutine using an unstructured input data based on the fact that Directory::Scratch didn't use structured data. This is, \s-1IMHO\s0, flawed design, though it may require slightly less typing.

I proposed a hybrid solution to reduce the amount of subroutines and integrate the subroutine using structured input into Directory::Scratch but we didn't reach an agreement on the \s-1API\s0. Instead I decided that I would piggyback on Directory::Scratch.

You can access create_structured_tree through a subroutine or a method through a Directory::Scratch object.

Whichever interface you choose, the argument to the create_structured_tree consists of tuples (hash entries). The key represents the name of the object to create in the directory.

If the value is of type:

\s-1ARRAY\s0

A file will be created, it's contents are the contents of the array (See Directory::Scratch)

\s-1HASH\s0

A directory will be created. the element of the hash will also be , recursively, created

\s-1OTHER\s0

The subroutine will croak.

SUBROUTINES/METHODS

create_structured_tree

use Directory::Scratch::Structured qw(create_structured_tree) ;

my $temporary_directory = create_structured_tree(%tree_structure) ; my $base = $temporary_directory->base() ;

Returns a default Directory::Scratch object.

directory_scratch_create_structured_tree

Adds create_structured_tree to Directory::Scratch when you Load Directory::Scratch::Structured with the piggyback_directory_scratch option.

use Directory::Scratch ; use Directory::Scratch::Structured qw(piggyback_directory_scratch) ;

my $temporary_directory = Directory::Scratch->new; $temporary_directory->create_structured_tree(%tree_structure) ;

_create_structured_tree

Used internally by both interfaces

piggyback

Used internally to piggyback Directory::Scratch.

BUGS AND LIMITATIONS

None so far.

AUTHOR

Khemir Nadim ibn Hamouda CPAN ID: NKH mailto:[email protected]

LICENSE AND COPYRIGHT

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

SUPPORT

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

perldoc Directory::Scratch::Structured

You can also look for information at:

  • AnnoCPAN: Annotated \s-1CPAN\s0 documentation <http://annocpan.org/dist/Directory-Scratch-Structured>

  • \s-1RT:\s0 \s-1CPAN\s0's request tracker Please report any bugs or feature requests to L <[email protected]>. We will be notified, and then you'll automatically be notified of progress on your bug as we make changes.

  • Search \s-1CPAN\s0 <http://search.cpan.org/dist/Directory-Scratch-Structured>

RELATED TO Directory::Scratch::Structured…

Directory::Scratch