use IO::File; my $cache= IO::File->new_tmpfile() or die "Can't create temporary file: $!\n"; print $cache $_ or die "Can't append to temporary file: $!\n" while defined( $_= <> ); seek( $cache, 0, 0 ) or die "Can't rewind temporary file: $!\n"; while( <$cache> ) { ... } seek( $cache, 0, 0 ) or die "Can't rewind temporary file: $!\n"; while( <$cache> ) { ... }