1NAME 2 Parse::Range - Parse text range definitions 3 4SYNOPSIS 5 use Parse::Range qw(parse_range); 6 7 my @range = parse_range('1,3,5-7'); 8 # @range = qw(1 3 5 6 7); 9 10 @range = parse_range('1-7,^2,^4'); 11 # @range = qw(1 3 5 6 7); 12 13 @range = parse_range('1-7,^(2,4)'); 14 # @range = qw(1 3 5 6 7); 15 16DESCRIPTION 17 This module parses range definitions and returns an array of individual 18 numbers. 19 20 It is intended to be used in command line applications where the user 21 should be able to select one or more options from a list or in any other 22 application where such a situation occurs. 23 24FUNCTIONS 25 By default no functions are exported. 26 27 parse_range 28 The one and only function this module provides. It accepts one or more 29 strings which are concatenated by a comma. Ranges, blocks and numbers 30 are expected to be seperated by comma. 31 32 Now the parsing takes place. Strings can be nested to any depth using 33 parentheses. Not matching parentheses are being repaired if possible. 34 Ranges can be expressed using the minus sign `-'. Use `^' to exclude 35 numbers or ranges from the current range. Negative numbers are expressed 36 using the minus sign. This is a valid expression `-4--2' which will 37 result in an array from minus four to minus two. `(-4)-(-2)' works as 38 well. The string is parsed from left to right. 39 40EXAMPLES 41 parse_range('1-7,^(2,4)'); 42 43 This will first add the numbers from one to seven to the range and then 44 exclude the numbers two and 4. The result is `1 3 5 6 7'. 45 46 parse_range('^(2,4),1-7'); 47 48 This is the same example as above except that it is the other way round. The exception of two and four 49 is a noop in this case because there is no range from which to exclude the numbers. The result is 50 therefore C<1 2 3 4 5 6 7>. 51 52 parse_range('1-9,^(5-9,^(8-9))'); 53 54 This is a more advanced example. From a range from one to nine we exclude a block which consists 55 of a range from five to nine from which eight and nine are excluded. 56 The result is C<1 2 3 4 8 9>. 57 58AUTHOR 59 Moritz Onken, `<onken at netcubed.de>' 60 61BUGS 62 Please report any bugs or feature requests to `bug-Parse-Range at 63 rt.cpan.org', or through the web interface at 64 http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Parse-Range. I will be 65 notified, and then you'll automatically be notified of progress on your 66 bug as I make changes. 67 68SUPPORT 69 You can find documentation for this module with the perldoc command. 70 71 perldoc Parse::Range 72 73 You can also look for information at: 74 75 * RT: CPAN's request tracker 76 http://rt.cpan.org/NoAuth/Bugs.html?Dist=Parse-Range 77 78 * AnnoCPAN: Annotated CPAN documentation 79 http://annocpan.org/dist/Parse-Range 80 81 * CPAN Ratings 82 http://cpanratings.perl.org/d/Parse-Range 83 84 * Search CPAN 85 http://search.cpan.org/dist/Parse-Range/ 86 87COPYRIGHT & LICENSE 88 Copyright 2009 Moritz Onken, all rights reserved. 89 90