You could do it with hashes easy, just use ID as the key and load both lists into seperate hashes. If key esists in oldfile's hash and not newfile's hash then it is a dropout, else if key exists in new files hash but not old file it is a add. finnally if a compair of the rest of the line on a key that exists in both hashes will tell you if it has changed or is the same. If you need more help let me know, I am kinda busy today so I did not have time to plug out an example.