Thread Zwei Dateien auslesen
(8 answers)
Opened by azib at 2015-10-29 16:17
Na ja, fast. ;) Ein paar Leerzeichen zwischen Funktionsnamen und Klammern waren bei Funktionsaufrufen noch da.
Mit den Einrückungen ist das so: Am besten macht man vier Leerzeichen pro Block. Auf die Dauer ist das am übersichtlichsten, vor allem, wenn man auf einer tieferen Blockebene schreibt. Also so: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/perl use warnings; use strict; for my $i (1 .. 10) { # Block 1 print "i: $i\n"; for my $u (1 .. 5) { # Block 2 print "u: $u\n"; } } Ok? An Deinem Code stimmt aber trotzdem was nicht, denn was macht Code (perl): (dl
)
for ($file1) { ... } denn? Das ist nicht richtig. Wortwörtlich wäre Deins so: 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 #!/usr/bin/perl use warnings; use strict; my $file1; my $file2; my $in1; my $in2; my $datei1; my $datei2; my @out1; my @out2; my $i; print 'Enter ID Sample 1: '; $file1 = <STDIN>; chomp($file1); open ($in1, "<", $file1) or die "Datei $file1 konnte konnte nicht gefunden werden!"; while (<$in1>) { chomp($_); my @a = split(/\t/, $_); push (@out1, "$a[1]\t$a[12]\n"); } close($in1); open($datei1, ">", "out1.txt"); foreach $i (@out1) { print $datei1 $i; } close($datei1); print 'Enter ID Sample 2: '; $file2 = <STDIN>; chomp($file2); open ($in2, "<", $file2) or die "Datei $file2 konnte konnte nicht gefunden werden!"; while (<$in2>) { chomp($_); my @b = split(/\t/, $_); push (@out2, "$b[1]\t$b[12]\n"); } close($in2); open ($datei2, ">", "out2.txt"); foreach $i (@out2) { print $datei2 $i; } close($datei1); Wenn man Code-Abschnitte hat, die sich wiederholen, bietet es sich aber an, dafür eine Funktion zu verwenden. Das wäre dann so: 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 #!/usr/bin/perl use warnings; use strict; sub processFile { my $nr = shift; my @a; my @out; my $i; print "\nEnter ID Sample $nr: "; my $filename = <STDIN>; chomp($filename); open (my $in, "<", $filename) or die "Datei $filename konnte konnte nicht gefunden werden!"; while (<$in>) { chomp($_); @a = split(/\t/, $_); push(@out, "$a[1]\t$a[12]\n"); } close($in); open(my $datei, ">", "out$nr.txt"); foreach $i (@out) { print $datei $i; } close($datei); } processFile("1"); processFile("2"); HTH |