my @a = qw( alpha beta gamma delta epsilon ); tie *FH, 'Tie::Handle::Array' => \@a; while () { print "$_\n"; } #### { package Tie::Handle::Array; sub TIEHANDLE { my( $pkg, $ar ) = @_; bless { A => $ar, I => 0, }, $pkg; } sub EOF { my $self = shift; $self->{I} > $#{ $self->{A} } } sub READLINE { my $self = shift; $self->EOF and return(); $self->{A}[ $self->{I}++ ] } }