NAME
Acme::Range - Alternative to the range operator
SYNOPSIS
use Acme::Range;
foreach (<10..1>) {
print "$_... ";
}
print "Lift-off!";
sub my_keys(\%) {
my @hash = %{ $_[0] };
return @hash[ glob("0,2..$#hash") ];
}
sub my_values(\%) {
my @hash = %{ $_[0] };
return @hash[ glob("1,3..$#hash") ];
}
DESCRIPTION
Have you ever wanted to abuse glob to do ranges that are not incrementing integers? Well, put down that crack pipe and run away from this module.
This module overloads the glob() function and thus the <>
operator to provide a range-like operator. This new glob operator takes the following formats:
A..Z
-
Returns the integers between A and Z. If Z is lower than A, this will return a reversed range. Thus
<1..9>
is(1..9)
and<9..1>
is(reverse 1..9)
. A,B..Z
-
Returns the integers between A and Z with a step such that the second value is B. Thus
<1,3..9>
is(1, 3, 5, 7, 9)
. A..Y,Z
-
Returns the integers between A and Z with a step such that the next to last value is Y. Thus
<1..7,9>
is(1, 3, 5, 7, 9)
. - Anything else
-
This will be globbed as before, e.g. <~> will return your home directory on Unux.
BUGS
Any code that uses this module is guaranteed to have a bug. Remove the line beginning use Acme::Range
to fix it.
SEE ALSO
AUTHOR
All code and documentation by Peter Corlett <abuse@cabal.org.uk>.
COPYRIGHT
Copyright (C) 2008 Peter Corlett <abuse@cabal.org.uk>. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
SUPPORT / WARRANTY
This is free software. IT COMES WITHOUT WARRANTY OF ANY KIND.