use NBDM_File; tie(%h,NDBM_File,'test_tie.tmp',O_RDWR/O_CREAT, 0640); while () { $id = substr($_, 9, 11); if (! exists($h{$id}) ) { $h{$id} = $_; } else { .... .... } } foreach (sort keys %h) { print OUTPUT $h{$_}; } untie %h;