http://www.perlmonks.org?node_id=7168


in reply to Writing to files

Two things:

1. It's good to understand a little bit of theory as to why you can't write before the beginning of a file. Files are stored on disk with a fixed beginning, whether that be at the beginning of a block or a pointer in a tree.. however the particular filesystem stores files. So, in order to prepend to a file, what actually has to be done is contents of the file have to physically be moved forward, so that the prepended string is located at the beginning of the file. Basically, the way to do this is to read the entire file, write out the new string, and then write out the original contents of the file, as said above.

2. The title of the section referenced above, "How do I change one line in a file/delete a line in a file/insert a line in the middle of a file/append to the beginning of a file?", doesn't make sense. Append means to add at the end, it should be prepend.