NAME
String::Range::Expand - Expand range-like strings
SYNOPSIS
use String::Range::Expand;
print "$_\n" for expand_range('host[aa-ac,^ab,ae][01-04,^02-03]');
# Prints ...
# hostaa01
# hostaa04
# hostac01
# hostac04
# hostae01
# hostae04
DESCRIPTION
This module provides functions to expand a string that contains
range-like expressions. This is something that is usually useful when
working with hostnames, but can be used elsewhere too.
FUNCTIONS
expand_range($string)
my @list = expand_range('...');
This function accept a single string, evaluates expressions in those
strings and returns a list with all available permutations. Ranges with
limits are expanded using the Range Operator.
my @list = expand_range('[aa-ad]'); # This is identical to ('aa' .. 'ad')
The following formats are recognized and evaluated
my @list = expand_range('foo[bar,baz]'); # Comma separated list
my @list = expand_range('foo[aa-ad,^ab]'); # Negated element
my @list = expand_range('foo[aa-ag,^ab-ad]'); # Negated range
expand_expr(@array)
my @list = expand_expr('foo-bar[01-03] host[aa-ad,^ab]Z[01-04,^02-03].name');
This runs expand_range against every range-like expression detected in
the argument list
SEE ALSO
- SSH::Batch
This is an extremely useful distribution if you are working with
hostnames. String::Range::Expand was inspired by this distribution,
and provides only a subset of features of SSH::Batch
- String::Glob::Permute
Pretty similar, but does not evaluate alphabetical ranges
- Text::Glob::Expand
Like String::Glob::Permute, it does not evaluate alphabetical
ranges. But it does provide some additional functionality like
setting upper limits and formatting.
BUGS AND LIMITATIONS
This module does not attempt to limit the number of permutations for an
expression.
Please report any bugs or feature requests at
https://github.com/mithun/perl-string-range-expand/issues
AUTHOR
Mithun Ayachit mithun@cpan.org
LICENSE AND COPYRIGHT
Copyright (c) 2014, Mithun Ayachit. All rights reserved.
This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself. See perlartistic.