NAME
Loop - Smart, Simple, Recursive Iterators for Perl programming.
SYNOPSIS
Loop::Array
@array
,
sub
{
my
(
$index
,
$value
)=
@_
;
"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
)=
@_
;
"checking key1 $key1, val1 $val1 for collisions \n"
;
Loop::Hash (
%hash
,
sub
{
my
(
$key2
,
$val2
)=
@_
;
"\tchecking key2 $key2, val2 $val2 for collisions \n"
;
"\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/)
{
"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.