#!perl -w BEGIN { { package My::ARGV; use strict; use Data::Dumper; sub TIEHANDLE { my ($class,@elts) = @_; warn 'TIEHANDLE'; bless {}; #[@elts] }; sub OPEN { warn 'OPEN: ' . Dumper \@_; 1 }; sub EOF { warn 'EOF: ' . Dumper \@_; @{ $_[0] } }; sub CLOSE { warn 'CLOSE: ' . Dumper \@_; 1 }; sub BINMODE { warn 'BINMODE: ' . Dumper \@_; @{ $_[0] } }; sub READLINE { my ($self) = @_; while (@ARGV and (!defined $self->{curr} or !scalar @{ $self->{curr}})) { $self->{curr} = shift @ARGV; }; if(scalar @{ $self->{curr} }) { return shift @{ $self->{curr} } } else { return $self->{curr} = undef } }; } tie *ARGV, 'My::ARGV'; } @ARGV = ([qw(1 2 3)],[qw(4 5 6)],[qw(7 8 9)]); while (<>) { print "$_\n" };