1,WG0045068-DNA,A01,0,102186_A01_WTCCCT519791,...
2,WG0045068-DNA,B01,0,102186_B01_WTCCCT519793,...
3,WG0045068-DNA,C01,0,102186_C01_WTCCCT519805,...
1,WG0045066-DNA,A01,0,102176_A01_WTCCCT527545,...
2,WG0045066-DNA,B01,0,102176_B01_WTCCCT527498,...
####
WG0045068-DNA,A01,0,102186_A01_WTCCCT519791,...
WG0045068-DNA,B01,0,102186_B01_WTCCCT519793,...
WG0045068-DNA,C01,0,102186_C01_WTCCCT519805,...
WG0045068-DNA,A01,0,102187_A01_WTCCCT519791,...
WG0045068-DNA,B01,0,102188_B01_WTCCCT519793,...
WG0045068-DNA,C01,0,102187_C01_WTCCCT519805,...
WG0045068-DNA,A01,0,102187_A01_WTCCCT519791,...
WG0045068-DNA,B01,0,102188_B01_WTCCCT519793,...
WG0045068-DNA,C01,0,102186_C11_WTCCCT519805,...
and i want to get:
1,WG0045068-DNA,A01,0,102186_A01_WTCCCT519791,...
2,WG0045068-DNA,B01,0,102186_B01_WTCCCT519793,...
3,WG0045068-DNA,C01,0,102186_C01_WTCCCT519805,...
4,WG0045068-DNA,C01,0,102186_C11_WTCCCT519805,...
1,WG0045068-DNA,A01,0,102187_A01_WTCCCT519791,...
2,WG0045068-DNA,C01,0,102187_C01_WTCCCT519805,...
3,WG0045068-DNA,A01,0,102187_A01_WTCCCT519791,...
1,WG0045068-DNA,B01,0,102188_B01_WTCCCT519793,...
2,WG0045068-DNA,B01,0,102188_B01_WTCCCT519793,...
####
open (FILE1, "<", "filein.txt") || die "$!";
open (FILE2, ">", "fileout.out") || die "$!";
my $counter;
while(){
m/.+,.+,\d+,(\d+)_.+/;
$counter->{$1}++ ;
print FILE2 "$counter->{$1},$_";
}
close FILE1;
close FILE2;
result would be :
1,WG0045068-DNA,A01,0,102186_A01_WTCCCT519791,...
2,WG0045068-DNA,B01,0,102186_B01_WTCCCT519793,...
3,WG0045068-DNA,C01,0,102186_C01_WTCCCT519805,...
1,WG0045068-DNA,A01,0,102187_A01_WTCCCT519791,...
1,WG0045068-DNA,B01,0,102188_B01_WTCCCT519793,...
2,WG0045068-DNA,C01,0,102187_C01_WTCCCT519805,...
3,WG0045068-DNA,A01,0,102187_A01_WTCCCT519791,...
2,WG0045068-DNA,B01,0,102188_B01_WTCCCT519793,...
4,WG0045068-DNA,C01,0,102186_C11_WTCCCT519805,...
not sorted, but sorting should not be a problem :)
####
input.file
102186
102176
####
open (FILEIN, "<", "input.file") || die "$!";
my $counter;
while(){
$counter->{$_} = 0;
}
close FILEIN;
####
elsif($output eq "Inhouse") {
...
and here just implemente the counter. you can do the same thing for for previous decisions, if needed
...
else {
$counter->{$save{$sam}{plateid}}++;
print OUT "$counter->{$save{$sam}{plateid}},$save{$sam}{platename},$save{$sam}{well},$save{$sam}{case},$save{$sam}{plateid}_$save{$sam}{well}_$save{$sam}{clone},Homo sapiens,$save{$sam}{gender},,$save{$sam}{vol},50,$save{$sam}{extmethod},,0,$save{$sam}{father},$save{$sam}{mother},,$save{$sam}{source}\n";
}
...