Thread Im String an verschiedenen Stellen arbeiten (3 answers)
Opened by String_Test at 2013-04-23 14:11

String_Test
 2013-04-23 14:11
#167203 #167203
User since
2013-04-23
19 Artikel
BenutzerIn
[default_avatar]
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)

View full thread Im String an verschiedenen Stellen arbeiten