in reply to ikk

You should be able to use split, yes.

If the words that split the records are just regular strings (ie., not regular expression), you could use the special $/ variable. Set it to the string, then just read in the file normally--it should read it in in chunks separated by the string. The chunks will string include the string that you used to split the input, so if you don't want it, strip the strings out.

$/ = "----\n"; while (<DATA>) { print "{\n", $_, "}\n"; } __DATA__ foo bar ---- baz ---- quack
Try it out--see how it works for you.

If it doesn't, try posting some of your own code and some sample data.