my $sep = '##'; my $sep_len = length($sep); my $last_pos = index($str, $sep); for (;;) { my $pos = index($str, '##', $last_pos + $sep_len); my $rec_pos = $last_pos; if ($pos < 0) { last if $last_pos == length($str); $last_pos = length($str); } else { $last_pos = $pos; } my $rid = substr($str, $rec_pos+19, 10); print "$rid: " . ($keeplist{$rid} ? 'y' : 'n') . "\n"; }