Thread Windows Problem mit Tie::File (4 answers)
Opened by BlackSheep at 2012-01-04 16:58

topeg
 2012-01-04 17:49
#155255 #155255
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Trotzdem kannst du mehr Fehlermeldungen machen.
Und eine Parameterübergabe wäre vorteilhaft. Mit globalen Variablen zu spielen ist nicht schön.

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
sub Read {
        # parameter übernehmen
        my $rls=shift();
        
        my $readseq = '';
        my $readname = '';
        my $file='C:\Users\Blub\Read\reads.fasta';
        if( tie(my @lines, 'Tie::File',$file) ){
                if( defined $lines[$rls] ) {
                        $readname = $lines[$rls-1];
                        $readname = substr( $readname, 0, 10 );
                        $readname =~ s/\D//g;
                        $readseq = $lines[$rls];
                        $rls += 2;
                }
                else{
                        if( $#lines < $rls ){
                                warn("Line $rls don't exists! There are only ".@lines." Lines!\n");
                        }
                        else{
                                warn("Line $rls is not defined!\n");
                        }
                        $switch = 'false';
                        $readname = 'false';
                }
                untie @lines;
        }
        else{
                warn("Can't tie File $file ($!)\n");
        }
        return( $readname, $readseq );
}

Wenn es dir wichtig ist, die Linux-Datei ohne Konvertierung weiter nutzen zu können mache in der Funktion vor dem tie:
Code (perl): (dl )
local $/="\x0A";

Damit wird der Recordseparator passend gesetzt.

View full thread Windows Problem mit Tie::File