in reply to how to match the pattern by using regexp for the below task

The file you are opening for read/write (+<) appears to be a text file with variable length records. You can't easily replace text records in place unless they are fixed length. There is really no such thing as a text file with records, it is just a string of characters, some of which happen to be new-line characters (that applies to UNIX and Windows anyway, some older systems did have real records).
I suggest you change your approach and write out a new file, then rename it on completion.
Please, don't use $a and $b, they are special variables in Perl and cause confusion.
Remember to place ^ and $ around your RE when describing a whole line.
Update: I misunderstood, and realise you are replacing strings of the same length. Your seek should probably be:
seek(FILE2, -(length $a), 1); (and you should chomp $file). But it is still messy.
Q. Are your data files realy double-spaced (\n\n between each record) or is that an aberation of cut-and-paste?
  • Comment on Re: how to match the pattern by using regexp for the below task