Thread Im String an verschiedenen Stellen arbeiten
(3 answers)
Opened by String_Test at 2013-04-23 14:11
Hallo,
ich bin noch ein Neuling was Perl angeht und hoffe ihr könnt mir weiterhelfen. Ich kann in einem String nach einem bestimmten Zeichen "," suchen, aber kann ich bei jedem Fund des Zeichens eine nachfolgende Sequenz ausschneiden und in eine neue Datei einfügen? Das müsste doch mit einer Schleife zu bewerkstelligen sein? Oder kann man dies nur mit Arrays machen? Bzw. welche Schleife arbeitet innerhalb eines Strings? Zuerst zieht mein Programm den Namen aus der Datei und anschließend eine Sequenz vier Stellen nach dem Komma. (Ich habe hier das Zeichen "]" durch das "," ersetzt, da Perl bei der Klammer immer gemeckert hat ;) Ich habe hier mal meinen Code eigefügt: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 #!/usr/bin/perl #use strict; #use warnings; my @ZeichenDNA; print "Geben sie den Dateinamen ein:\n"; $DNA_dataname = <STDIN>; chomp $DNA_dataname; #Get name unless (open(DNADATA, $DNA_dataname) ) { print "Datei \"$DNA_dataname\" konnte nicht geöffnet werden"; exit } $DNA = <DNADATA>; close DNADATA; chop($DNA); $DNA =~s/(>)/_/g; $DNA =~s/(\[)/>/g; $positionName=index($DNA,">"); $ZeichenName = substr($DNA,$positionName,); chop($ZeichenName); ###################################################################### # Get Sequences unless (open(DNADATA, $DNA_dataname) ) { print "Datei \"$DNA_dataname\" konnte nicht geöffnet werden"; exit } @DNA = <DNADATA>; close DNADATA; #Hier wird das Array in einen String umgewandelt $DNAString=join("",@DNA); $DNAString =~s/(\])/,/g; $PositionDNA= index($DNAString,","); $Sequence = substr($DNAString,$PositionDNA+4,24); push(@ZeichenDNA, $Sequence); #Die Sequenz wird in die Output.txt geschrieben my $file = "Output.txt"; unless(open FILE, '>'.$file) { die "\nUnable to create $file\n"; } print FILE "$ZeichenName\n"; print FILE "@ZeichenDNA\n"; close FILE; Ich hoffe er ist nicht allzu grausig anzuschauen :D In meiner Datei befinden sich dann folgender Inhalt: >Name ATGCGTAGCTAGGATCGATATAGGCC Ich bräuchte aber aus dem einen String mehrere solcher Basenzeilen alle zusammen konkatentiert. Bin für jeden Tipp dankbar. Last edited: 2013-04-23 14:22:05 +0200 (CEST) |