in reply to Query regarding 'Tie' file

Your description of the symptoms is confusing me. You talk about Tie::File making modifications but your duplicating/check code not following these modifications. This seems to me to be a case of your duplicating/check code being faulty.

Tie::File does not support inserting new elements by using strings with \n, as per its documentation. So use splice to insert the new lines. Most likely, one of your problems comes from Tie::File flushing certain lines to disk and upon rereading them, getting its count out of whack because the old (cached) line numbers don't match up with the offsets anymore because you sneaked additional lines into the array instead of using the documented approach.

Replies are listed 'Best First'.
Re^2: Query regarding 'Tie' file
by Harman (Initiate) on Sep 09, 2008 at 12:12 UTC
    Regarding 'Tie::File flushing certain lines to disk and upon rereading them', I am using 'Deferred Writing' for tie. So any modification I make to tied array should be written to disk only when I untie the file. So line numbers should not change while reading this file contents. And while reading from this tiedArray it should give the modified contents & not the original contents.

    I also suspect the problem is coming due to flushing of 'deferred write buffer' as I am writing a lot of data to @tieArray. But my confusion is that in that case the contents of file 'myFile' after 'untie' should also come wrongly.

      Not necessarily, because you don't make anymore changes to the tied array, so no wrong lines need to be either written nor read. But all of this is moot speculation. Change your code to use splice and see if that changes anything.