---
name: "Directory::Scratch::Structured"
section: "3pm"
platform: "linux"
package: "libdirectory-scratch-structured-perl"
version: "0.04-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Directory::Scratch::Structured"
---

# Directory::Scratch::Structured(3pm)

## NAME

```
 Directory::Scratch::Structured - creates temporary files and directories from a structured description
```

## 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, IMHO, 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 API. 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:

- ARRAY

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

- HASH

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

- OTHER

  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:nadim@khemir.net
```

## 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 CPAN documentation

  \<http://annocpan.org/dist/Directory-Scratch-Structured\>

- •

  RT: CPAN's request tracker

  Please report any bugs or feature requests to  L \<bug-directory-scratch-structured@rt.cpan.org\>.

  We will be notified, and then you'll automatically be notified of progress on your bug as we make changes.

- •

  Search CPAN

  \<http://search.cpan.org/dist/Directory-Scratch-Structured\>

## SEE ALSO

Directory::Scratch
