Certainly, you can read a file into an array, and process that; whether it's a good idea depends on the size of the file. For reasonably sized files (a few megabytes), it's likely to be the choice which uses the least wall-clock time. If the file is very large, something like Tie::File may be appropriate.
At least until you get the code debugged, I would make sure that you create a backup file when you do an "edit in place."
editorial corrections
emc
Information about American English usage here and here.
Any New York City or Connecticut area jobs? I'm currently unemployed.