in reply to Defining Arrays

Here is an evil way with that uses a closure that I just read about in the Damian's book Object Oriented Perl :
use strict; use vars qw($iterator $next); $iterator = iterate(0.1,9.4,0.1); while ($iterator->($next)) { # the value is in $next, but since we are # iterating by a fraction, some numbers will # not be rounded up (e.g. 4.999999 instead of 5.0) my ($rounded) = $next =~ /^(\d+(\.\d)?)/; $rounded .= '.0' unless length $rounded > 1; print "$rounded\n"; } sub iterate { my ($from,$to,$step) = @_; my $next = $from - $step; my $cref = sub { $next += $step; return if $next > $to; $_[0] = $next; return 1; }; return $cref; }
Eat your heart out, Java.

UPDATE:
Thanks to alfie and andye for catching the rounding error. Actually, i didn't post this for it's practical use, andye's solution is much more consise and hits the nail on the head - i just thought this was way cool!

Jeff

R-R-R--R-R-R--R-R-R--R-R-R--R-R-R--
L-L--L-L--L-L--L-L--L-L--L-L--L-L--