C:\test>p1
perl> sub getIter{ my ($s,$e,$ref)=@_; $e=$#$ref if $e==-1; return sub { $s<=$e ? $ref->[$s++] : (); }}
perl> @a = 1 .. 1000000
perl> $iter = getIter 500000, 500005, \@a
perl> print while $_ = $iter->()
500001500002500003500004500005500006
perl>
####
#! perl -slw
use strict;
sub getIter{
my ($start, $end, $aryRef) = @_;
$end = $#$aryRef if $end == -1;
return sub {
return $aryRef->[$start++] if $start < $end;
();
}
}
my @a = 1 .. 1000000;
my $iter = getIter 500000, 500005, \@a;
print while $_ = $iter->();
__END__
500001
500002
500003
500004
500005
####
#! perl -slw
use strict;
sub getIter{
my ($s, $e, $ref)=@_;
$e = $#$ref if $e == -1;
return sub {
($s < $e) ? *_ = \$ref->[$s++] : return;
}
}
my @a = 1 .. 1000000;
my $iter = getIter 500000, 500005, \@a;
print while $iter->();
$iter = getIter 500000, 500005, \@a;
$_ = 'modified' while $iter->();
$iter = getIter 500000, 500005, \@a;
print while $iter->();
__END__
C:\test>227478
500001
500002
500003
500004
500005
modified
modified
modified
modified
modified
C:\test>
####
#! perl -slw
use strict;
$_ = 'some value';
print;
for (1 .. 10) { print; }
print;
__END__
C:\test>temp
some value
1
2
3
4
5
6
7
8
9
10
some value
C:\test>