since it reads the file inmemory so its memory usage hits upto 1GB for only 11MB file .
And so what? Does the program fail? 1 GB in memory is quite large, but is not necessarily a problem with current computers. (Although I am quite a bit surprised that it should take that much.)
The next question is which version of Excel produced your files. Although I haven't used Perl to work on Excel files for at least 6 years (except one relatively small project writing fairly simple Excel files under Unix), my understanding is that the most recent Excel file format is really a zipped file containing a number of XML file components. If this is the case with your version, then updating the right file component might be sufficient. I have never done it, and have no idea whether it is simple or not, whether it works or not, but it might be a useful clue.
Another alternative might be to export your Excel file in CSV format, to update the CSV file, and to convert it back to Excel.
I dunno if this is gonna get you anywhere, but these are just two possible solutions.