5000行程度で、タブ区切り、1列目が「A001」みたいなユニークなIDなら、
my %data = join("", <DATA>) =~ /^(.+?)\s+(.+)$/mg;
とかでハッシュに全部読み込んでから処理するのが一番楽で速いんじゃ?