/usr/share/doc/libstring-glob-permute-perl/README is in libstring-glob-permute-perl 0.01-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | ######################################################################
String::Glob::Permute 0.01
######################################################################
NAME
String::Glob::Permute - Expand {foo,bar,baz}[2-4] style string globs
SYNOPSIS
use String::Glob::Permute qw( string_glob_permute );
my $pattern = "host{foo,bar,baz}[2-4]";
for my $host (string_glob_permute( $pattern )) {
print "$host\n";
}
# hostfoo2
# hostbar2
# hostbaz2
# hostfoo3
# hostbar3
# hostbaz3
# hostfoo4
# hostbar4
# hostbaz4
DESCRIPTION
The "string_glob_permute()" function provided by this module expands
glob-like notations in text strings and returns all possible
permutations.
For example, to run a script on hosts host1, host2, and host3, you might
write
@hosts = string_glob_permute( "host[1-3]" );
and get a list of hosts back: ("host1", "host2", "host3").
Ranges with gaps are also supported, just separate the blocks by commas:
@hosts = string_glob_permute( "host[1-3,5,9]" );
will return ("host1", "host2", "host3", "host5", "host9").
And, finally, using curly brackets and comma-separated lists of strings,
as in
@hosts = string_glob_permute( "host{dev,stag,prod}" );
you'll get permutations with each of the alternatives back: ("hostdev",
"hoststag", "hostprod") back.
All of the above can be combined, so
my @hosts = string_glob_permute( "host{dev,stag}[3-4]" );
will result in the permutation ("hostdev3", "hoststag3", "hostdev4",
"hoststag4").
The patterns allow numerical ranges only [1-3], no string ranges like
[a-z]. Pattern must not contain blanks.
The function returns a list of string permutations on success and
"undef" in case of an error. A warning is also issued if the pattern
cannot be recognized.
Zero padding
An expression like
@hosts = string_glob_permute( "host[8-9,10]" );
# ("host8", "host9", "host10")
will expand to ("host8", "host9", "host10"), featuring no zero-padding
to create equal-length entries. If you want ("host08", "host09",
"host10"), instead, pad all integers in the range expression
accordingly:
@hosts = string_glob_permute( "host[08-09,10]" );
# ("host08", "host09", "host10")
Note on Perl's internal Glob Permutations
Note that there's a little-known feature within Perl itself that does
something similar, for example
print "$_\n" for < foo{bar,baz} >;
will print
foobar
foobaz
if there is no file in the current directory that matches that pattern.
String::Glob::Permute, on the other hand, expands irrespective of
matching files, by simply always returning all possible permutations.
It's also worth noting that Perl's internal Glob Permutation does not
support String::Glob::Permute's [m,n] or [m-n] syntax.
COPYRIGHT & LICENSE
Copyright (c) 2008 Yahoo! Inc. All rights reserved. The copyrights to
the contents of this file are licensed under the Perl Artistic License
(ver. 15 Aug 1997).
AUTHOR
Algorithm, Code: Rick Reed, Ryan Hamilton, Greg Olszewski. Module: 2008,
Mike Schilli <cpan@perlmeister.com>
|