Marcel Grünauer > Permute-Named-1.100980 > Permute::Named

Download:
Permute-Named-1.100980.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 1.100980   Source  

NAME ^

Permute::Named - permute multiple-valued key-value pairs

VERSION ^

version 1.100980

SYNOPSIS ^

    use Permute::Named;

    my @p = permute_named(bool => [ 0, 1 ], x => [qw(foo bar baz)]);
    for (@p) {
        some_setup() if $_->{bool};
        other_setup($_->{x});
        # ... now maybe do some tests ...
    }

FUNCTIONS ^

permute_named

Takes a list of key-specification pairs where the specifications can be references to arrays of possible actual values. It then permutes all key-specification combinations and returns the resulting list of permutations.

The function expects the pairs as an array, an array reference or a hash reference. The benefit of passing it as an array or array reference is that you can specify the order in which the permutations will take place - the final specification will be processed first, then the next-to-last specification and so on. Any other type of reference causes it to die. An uneven-sized list of elements - indicating that one key won't have a specification - also causes it to die. The resulting permutation list is return as an array in list context or as a reference to an array in scalar context.

Each specification can be a scalar or a reference to an array of possible values.

Example 1:

    permute_named(bool => [ 0, 1 ], x => [qw(foo bar baz)])

returns:

    [ { bool => 0, x => 'foo' },
      { bool => 0, x => 'bar' },
      { bool => 0, x => 'baz' },
      { bool => 1, x => 'foo' },
      { bool => 1, x => 'bar' },
      { bool => 1, x => 'baz' },
    ]

The following call is equivalent to the call above:

    permute_named([ bool => [ 0, 1 ], x => [qw(foo bar baz)] ])

Passing the key-specification pairs as a hash reference also works, but does not guarantee the permutation order:

    permute_named({ bool => [ 0, 1 ], x => [qw(foo bar baz)] })

Example 2:

    permute_named(foo => 1, bar => 2)

just returns the one permutation:

    [ { foo => 1, bar => 2 } ]

The permute_named() function has been useful in making sure that tests work for all combinations of settings, as shown in the synopsis.

INSTALLATION ^

See perlmodinstall for information and options on installing Perl modules.

BUGS AND LIMITATIONS ^

No bugs have been reported.

Please report any bugs or feature requests through the web interface at http://rt.cpan.org/Public/Dist/Display.html?Name=Permute-Named.

AVAILABILITY ^

The latest version of this module is available from the Comprehensive Perl Archive Network (CPAN). Visit http://www.perl.com/CPAN/ to find a CPAN site near you, or see http://search.cpan.org/dist/Permute-Named/.

AUTHOR ^

  Marcel Gruenauer <marcel@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2010 by Marcel Gruenauer.

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

syntax highlighting: