Loop version 1.00 ================= Loop - Smart, Simple, Recursive Iterators for Perl programming. use Loop; Loop::Array @array, sub { my ($index,$value)=@_; print "at index '$index', value='$value'\n"; } Loop subroutines are included for Arrays, Hashes, and Files. All looping routines support 'last' and 'redo' control flow. All looping routines support a "map" style syntax, similar to the "map" perl function, where the loop can return a Scalar or List, and whatever is returned is accumulated into a list and returned by the Loop call. This example will return a list of keys that are contained in their corresponding value. my %hash = qw ( aaa bebaaa abc xyz root taproot oingo boingo billy bob ); @key_is_in_value = Loop::Hash %hash, sub { my($key,$val)=@_; if($val=~/$key/) {return $key;} else {return;} }; Hashes can have nested loops, which avoids the perl builtin "each" problem of having a place holder for only one iterator. Files can be looped through providing a quick and easy way to open, read, and close a file, including error handling, and providing the current line number. # print first 10 lines of file, along with each line's line number. Loop::File "tfile.pl", sub { my($linenum,$linestr)=@_; print "$linenum \t: $linestr"; $_[-1]='last' if ($linenum == 10); }; INSTALLATION To install this module type the following: perl Makefile.PL make make test make install DEPENDENCIES none COPYRIGHT AND LICENCE Copyright (C) 2003 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.