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:
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
my @ZeichenDNA;
print "Geben sie den Dateinamen ein:\n";
$DNA_dataname = <STDIN>;
chomp $DNA_dataname;
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);
unless (open(DNADATA, $DNA_dataname) )
{
print "Datei \"$DNA_dataname\" konnte nicht geöffnet werden";
exit
}
@DNA = <DNADATA>;
close DNADATA;
$DNAString=join("",@DNA);
$DNAString =~s/(\])/,/g;
$PositionDNA= index($DNAString,",");
$Sequence = substr($DNAString,$PositionDNA+4,24);
push(@ZeichenDNA, $Sequence);
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)