The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Scalar::Array - Turns arrayrefs into iterators

SYNOPSIS

  use Scalar::Array;

  my $rr_ref = [ 1, 2, 3, 4, 5 ];

  round_robin( $rr_ref );
  print sa_length( $rr_ref ); # prints 5

  print $rr_ref,"\n"; # prints 1
  print $rr_ref,"\n"; # prints 2
  print $rr_ref,"\n"; # prints 3
  print $rr_ref,"\n"; # prints 4
  print $rr_ref,"\n"; # prints 5
  print $rr_ref,"\n"; # prints 1
  print $rr_ref,"\n"; # prints 2
  print $rr_ref,"\n"; # prints 3
  ...

  my $s_ref = [ 1, 2, 3, 4, 5 ];

  shrink( $s_ref );
  print sa_length( $s_ref ); # prints 5

  print $s_ref,"\n"; # prints 1
  print $s_ref,"\n"; # prints 2
  print $s_ref,"\n"; # prints 3
  print $s_ref,"\n"; # prints 4
  print $s_ref,"\n"; # prints 5
  print $s_ref,"\n"; # undef
  print $s_ref,"\n"; # undef
  print $s_ref,"\n"; # undef

DESCRIPTION

Scalar::Array will turn any arrayref into an iterator by simply using the arrayref itself. Only reading is currently implemented.

round_robin

        round_robin( $arrayref );

Turn the passed in arrayref into a round robin iterator. At each iteration, we shift off the next value and then push back on the other end. See SYNOPSIS for the example.

shrink

        shrink( $arrayref );

Turn the passed in arrayref into a shrinking iterator. At each iteration, we shift off the next value, but don't push back on the other end. In other words, the arrayref will shrink on each read.

        printf "Arrayref has %d items\n", sa_length( $arrayref );

Return the number of items in the arrayref.

BUGS

This did seem like a good idea at the time. Now I'm not so sure.

AUTHOR

Alfie John, <alfie@h4c.kr>

COPYRIGHT AND LICENSE

Copyright (C) 2010 by Alfie John

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 83:

Unknown directive: =head