The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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

List::Maker, which turns out to have already existed before I wrote this. You should probably use that if you don't find the whole concept highly icky.

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.