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.