in reply to read and write to the same file
Just to elaborate a bit more on what tachyon said:
When you open a file for write you use ">file". This will destroy the contents of "file" if it already existed and you will be able to write to the file. ">" still works the same way even if you add read support, and I'm pretty sure the perl documentation warns about what you ended up doing ("+>"): opening the file for read and write, but destroying the contents before you got a chance to read.
What you want is "+<". You can now read and write to the file, but you will want to familiarize yourself with the seek command, which will allow you to write to different spots in the file.
Also keep in mind that the file does not truncate itself. For instance if you have a file that contains "oooo", you seek to the beginning of the file and write "XXX", your file will contain "XXXo".