#!/usr/bin/perl -l use strict; use warnings; use Tie::Array::Iterable; sub foo { my @list = 0..9; return wantarray ? @list : Tie::Array::Iterable->new(@list); } # access as a list print for foo(); # or an iterator my $iter = foo()->from_start(); print ($iter->value),$iter->next until $iter->at_end;