It depends what you mean by 'parse'. I'm guessing that you wish to read each block as one record, then split the fields. Just set local $/='}'; then read the file in the usual way: each block will be one record. Then you can split around "\n" to get the fields.