in reply to Re: only increment counter if the ID has not been seen before
in thread only increment counter if the ID has not been seen before

The OP wanted the same number in front of each occurence of the same ID, not a slowly increasing number counting different IDs so far. This can be achieved with a hash storing unique numbers rather than repetition counts.
use warnings; use strict; my $counter = 0; my %hash; while (<DATA>) { my @splits = split; my $snp = $splits[0]; $hash{$snp} ||= ++$counter; print "$hash{$snp} $snp\n"; } __DATA__ foo abc foo cde bar xyz foo hij
This should output:
1 foo 1 foo 2 bar 1 foo
... rather than:
1 foo 1 foo 2 bar 2 foo