# Slurp file in one - assuming there's room:-) open FILE, " close FILE; while (@files) { # # do something with file $_ # shift @files; } END { # Save any state @files && do { open FILE, ">fname" or die "Cannot save state - $!"; printf FILE "@files"; close FILE; }; }