Thread array splitten und in string überführen
(15 answers)
Opened by anou at 2010-10-31 20:53
Schau Dir mal Deine Programmlogik an.
Du liest alle Zeilen aus den Filehandles und willst anschließend in der while()-Schleife aus dem Handle GFFINPUT lesen... der ist aber schon am Ende angekommen. Es wird nichts mehr gelesen, die while()-Schleife ist fertig und das Programm endet... Aber willst Du nicht besser aus VARINPUT lesen? .... Aber das ist ja auch schon am Ende angekommen, weil Du zuvor alles nach @var gelesen hast... Ich habe mal Deinen Code überarbeitet und für dieses Beispiel überflüssige Variablen rausgeworfen. Ausserdem habe ich Subroutinen eingeführt, um ein wenig Struktur ins Programm zu bringen. 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 #!/usr/bin/perl -w use strict; use Data::Dumper; # sub routinen ########################### sub read_gff_file { print "Enter the filename of your input file with the single columns of your gff file:= "; chomp( my $gfffilename=<STDIN> ); open my $gff_fh, '<', $gfffilename or die "$gfffilename Can not open file\n"; # nur erste Zeile lesen chomp( my $gff = <$gff_fh> ); return split m{ }, $gff; } sub open_var_file { print "Enter the filename of your input file with the variants:= "; chomp( my $varfilename=<STDIN> ); open my $var_fh, '<',$varfilename or die "$varfilename Can not open file\n"; # keine Zeile lesen, nur Handle liefern return $var_fh; } sub do_my_job { my @spalten = read_gff_file(); my $var_handle = open_var_file(); while ( my $line = <$var_handle> ) { chomp $line; # Sollte 3 Felder (z.B. A,A1,A2) ergeben my @fields = split m{ }, $line; my @result = @spalten; splice(@result, 2, 0, @fields ); print join( ', ', @result ), "\n"; } } # main program ########################### do_my_job(); So, Schluß für heute. Gute Nacht. meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |