A basic challenge of iterators
sub mymap(@list, &block) { my $i = 0; my @result; while $i < @list.elems { push @result, &block(@list[$i]); $i = $i + 1; } @result; }
What happens if called as ...?
mymap($file.lines, &block)
@list ends up holding all of the lines read from $file
mymap isn't acting like a pipeline filter