# always test for failure open (FILEHANDLE, "+< $filename") || die "Can't open $filename in update mode: $!\n"; # read entire file into array of lines @array = ; # do stuff to the file here # go back to beginning of file handle seek(FILEHANDLE, 0, 0) or die ("Seek failed on $filename: $!\n"); print FILEHANDLE @array or die ("Print failed on $filename: $!\n"); # truncate the file so we don't have excess garbage at the end truncate(FILEHANDLE, tell(FILEHANDLE)) or die ("Truncate failed on $filename: $!\n"); close (FILEHANDLE) or die ("Close failed on $filename: $!\n");