Thread Auslesen verschiedener Daten aus einem File: Wie programmiere ich übersichtlich und effizient?
(3 answers)
Opened by Sven_123 at 2011-09-23 14:02
Ah, ich glaub, mir ist ne gute Möglichkeit eingefallen:
Ich füll mir in jedem Durchlauf einen Array mit Referenzen auf Subroutinen, die die einzelnen Informationen, die ich brauch extrahieren und klapper den dann in jeder Zeile ab...muss ich nur noch rausfinden, wie sich ein <$file> in ner Subroutine außerhalb der while-Schleife auf die Schleife auswirkt, aber das schaff ich... Edit: Tataa! :) 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 #!/usr/bin/perl use strict; use warnings; my ($e,$g); printtext(); { my ($x,$y); open my $in, "< text" or die; defsubs(); my @j = ($x,$y); while (<$in>){print "while: $_"; for my $j (@j){$j->($_)}} print "e: $e; v: $g;\n"; #+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+# sub defsubs{ $x = sub{ #Energie-Auslese-Sub if ($_[0] =~ /Energie: (\d+)/){$e = $1} }; $y = sub{ #Gradient-Auslese-Sub if ($_[0] =~ /Gradient/){ $_ = <$in>; $_ = <$in>; $_ = <$in>; s/^\s+//; my @l = split; $g = sqrt($l[0]**2+$l[1]**2+$l[2]**2); } }; } #+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+# } system "rm text"; sub printtext{ if (-e "text"){die "text existiert...\n"} open my $txt, "> text" or die; print $txt "Test 1 Energie: 20 als nächstes der Gradient gleich gleich 1 2 3 Ende\n"; } Last edited: 2011-09-23 17:00:20 +0200 (CEST) |