Hallo,
Ich bin noch unerfahren im programmieren und habe ein Problem mit folgendem Perl-Skript:
open (INFILE, "$ARGV[0]"); open (OUTFILE, ">distance.txt"); $count = 1; @arr = <INFILE>; while ($arr[$count-1] ne "" || $arr[$count] ne "") { ($name1, $contigID1, $start1, $end1, $OrfID1, $strang1, $fam1, $Pfam_id1, $fam1, $e_value1, $gen_start1, $gen_end1, $overlap1) = split ("\t", $array[$count-1], 12); ($name2, $contigID2, $start2, $end2, $OrfID2, $strang2, $fam2, $Pfam_id2, $fam2, $e_value2, $gen_start2, $gen_end2, $overlap2) = split ("\t", $array[$count], 12); if ($Pfam_id1 eq $Pfam_id2 && $contigId1 eq $contigID2) { $dist = ($start2 - $end1); print OUTFILE ("$arr[$count-1], $dist\n"); } $count++; }
Dieses möchte ich auf verschiedene Datensätze nach folgendem Aufbau anwenden:
Name=MT NC_0077881 4904 4740 NC_0077881_49 + COX1 PF0011520 21e-08 1 16234 164 , 0 Name=MT NC_0077881 5219 5043 NC_0077881_51 + COX1 PF0011520 11e-08 1 16234 176 , 0 Name=MT NC_0077881 5369 5223 NC_0077881_53 + COX1 PF0011520 86e-08 1 16234 146 , 0 Name=MT NC_0077881 5525 5373 NC_0077881_56 + COX1 PF0011520 81e-12 1 16234 152 , 0 Name=MT NC_0077881 5630 5529 NC_0077881_57 + COX1 PF0011520 65e-09 1 16234 101 , 0
Statt der 0 sollte als neue zweite Zeile oder 13 Spalte nun die Distanz zwischen z.B. 5219 (Zeile 2) - 4740 (Zeile 1), also 479 stehen. Wo liegt der Fehler? Wie kann ich dies für jede Spalte hinbekommen? Vielen Dank für Eure Zeit und Hilfe!
Liebe Grüße