#!/usr/bin/perl use strict; use warnings; sub make_list { my @list = @_; my $count = 0; sub {wantarray ? do {$count = 0; @list} : $list [$count ++]} } my $list = make_list qw /red green blue white brown purple/; print scalar $list -> (), "\n"; print scalar $list -> (), "\n"; print join " " => $list -> (), "\n"; my @list = qw /one two three four five six/; my $count = 0; sub foo { wantarray ? do {$count = 0; @list} : $list [$count ++] } print scalar foo, "\n"; print scalar foo, "\n"; print join " " => foo, "\n"; __END__ red green red green blue white brown purple one two one two three four five six