Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
where the 1, 2, 3, 4, 5 are line numbers. What I am stuck with is, If I have more than one plate name in the file I get the line numbers iterating for the other plates as well.1,WG0045068-DNA,A01,0,102186_A01_WTCCCT519791,Homo sapiens,male,,13,50 +,-,,0,,,,Blood 2,WG0045068-DNA,B01,0,102186_B01_WTCCCT519793,Homo sapiens,male,,13,50 +,-,,0,,,,Blood 3,WG0045068-DNA,C01,0,102186_C01_WTCCCT519805,Homo sapiens,female,,13, +50,-,,0,,,,Blood 4,WG0045068-DNA,D01,0,102186_D01_WTCCCT519796,Homo sapiens,male,,13,50 +,-,,0,,,,Blood 5,WG0045068-DNA,E01,0,102186_E01_WTCCCT519797,Homo sapiens,female,,13, +50,-,,0,,,,Blood
I need to start the other plate as 1, 2, 3, 4... until it has values attached to it. Some plates may have 96 lines and some may have as little as 1. I could get the number of lines that each plate has from the database. I have atached my code along with this for you. Could you suggests some way to get to this!!! Thanks a lot in advance ...6,WG0045066-DNA,A01,0,102176_A01_WTCCCT527545,Homo sapiens,female,,13, +50,Nucleon BACC3 kit,,0,,,,Blood 7,WG0045066-DNA,B01,0,102176_B01_WTCCCT527498,Homo sapiens,female,,13, +50,Nucleon BACC3 kit,,0,,,,Blood 8,WG0045066-DNA,C01,0,102176_C01_WTCCCT527510,Homo sapiens,male,,13,50 +,Nucleon BACC3 kit,,0,,,,Blood 9,WG0045066-DNA,D01,0,102176_D01_WTCCCT527522,Homo sapiens,male,,13,50 +,Nucleon BACC3 kit,,0,,,,Blood
Where in, the @order has all the information from the database and %save is a hash.And $save{$sam}{count} is the number of lines it has got for each plate. The plates here are 102186 and 102176.elsif($output eq "Inhouse") { my $n= 1; print OUT ("Row,Institute Plate Label,Well,Is Control,Institut +e Sample Label,Species,Sex,Comments,Volume (ul),Conc (ng/ul),Extracti +on Method,WGA Method (if Applicable),Mass of DNA used in WGA,Parent 1 +,Parent 2,Replicate(s),Tissue Source\n"); print OUT "\n\n"; foreach my $sam(@order){ if($save{$sam}{clone} =~ /BLANK|Water/i){ print OUT "$n,$save{$sam}{platename},$save{$sam}{well},,$s +ave{$sam}{plateid}$save{$sam}{well}_BLANK,,,BLANK,,,,,,,,,,\n"; $n++; } if (!$save{$sam}{platename}) { print OUT "$n,$save{$sam}{plateid},$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}{e +xtmethod},,,$save{$sam}{father},$save{$sam}{mother},,$save{$sam}{sour +ce}\n"; $n++; } else { #unless ($n == $save{$sam}{count}) { print OUT "$n,$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{$sa +m}{source}\n"; $n++; } } } }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Iteration in perl
by baxy77bax (Deacon) on Apr 03, 2009 at 10:21 UTC | |
by Anonymous Monk on Apr 03, 2009 at 10:38 UTC | |
by Anonymous Monk on Apr 03, 2009 at 12:27 UTC | |
by zwon (Abbot) on Apr 03, 2009 at 18:58 UTC |