Loop - Smart, Simple, Recursive Iterators for Perl programming.


NAME

Loop - Smart, Simple, Recursive Iterators for Perl programming.


SYNOPSIS

  use Loop;

  Loop::Array @array, sub
        {
        my ($index,$value)=@_;
        print "at index '$index', value='$value'\n";
        }


ABSTRACT

This module is intended to implement simple iterators on perl variables with little code required of the programmer using them.

Some additional advantages over standard perl iterators:

Array iterators give access to the current index within the array. Hash iterators can be nested upon the same hash without conflicts. File iterators allow simple file munging in a few lines of code.


DESCRIPTION

Loop on an Array

  # loop on an array, at index 3, change the value in the array to "three"
  my @array = qw (alpha bravo charlie delta echo);
  Loop::Array @array, sub
        {
        my($index,$val)=@_;
        if($index == 3)
                {
                # modify the element in the original array
                # note that when you want to change the original array,
                # you must assign to the parameter array @_
                $_[1] = 'three'; 
                }
        }

Loop on a Hash

  # loop on a hash, perform nested iteration on the same hash.
  my %hash = 
        (
        blue => 'moon',
        green => 'egg',
        red => 'baron',
        );

  Loop::Hash (%hash, sub
        {
        my($key1,$val1)=@_;
        print "checking key1 $key1, val1 $val1 for collisions \n";
        Loop::Hash (%hash, sub
                {
                my($key2,$val2)=@_;
                print "\tchecking key2 $key2, val2 $val2 for collisions \n";
                print "\t $val2 is not $key1\n"
                        unless($key1 eq $key2);
                return;
                });
        });

Loop on a File

  # loop through a file, read it line by line, and grep for a string.
  Loop::File "tfile.pl", sub
        {
        my($linenum,$linestr)=@_;
        if($linestr =~ /search/)
                {
                print "found at line $linenum: $linestr";
                }
        };

EXPORT

none


SEE ALSO


AUTHOR

Greg London, http://www.greglondon.com


COPYRIGHT AND LICENSE

Copyright 2003 by Greg London, All Rights Reserved

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

 Loop - Smart, Simple, Recursive Iterators for Perl programming.