Thread Einlesen von Zahlenfolgen mit anschliessender Weiternutzung
(5 answers)
Opened by Thomas at 2009-06-15 16:09
Hallo zusammen -
so, habe nun mein erste Perl - Skript lauffähig! Dennoch noch ein weiteres Problem: die rausgeschriebene Tabelle bricht schon nach dem 5. Parameter in eine neue Zeile, obwohl der \n New-Line Befehl erst nach dem 6. Parameter kommt. Anbei mal mein vollständiger Code. Für das, dass dies meine ersten Gehversuche mit Perl sind/waren, habe ich das innerhalb 2 Stunden relativ gut hinbekommen. Bin trotzdem für jegliche Kommentare und Verbesserungen dankbar. Grüße 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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 #!/usr/bin/perl use strict; my @var = 0; my @fout = 0; my @fin = 0; my $Y = 0; my $Yintern = 0; my $X = 0; my $C = 0; my $Zs = 0; my $a1 = 0; my $a2 = 0; my $x_shift = 0; my $shift_c = 0; my $shift_zs = 0; my $dZ = 0; my $tmp1_br = 0; my $tmp1 = 0; my $b1_1 = 0; my $b1_2 = 0; my $b2_1 = 0; my $b2_2 = 0; my $file1 = "dataout.txt"; open(fout, ">$file1"); my $file2 = "datain.csv"; unless( open(fin, "<$file2") ) { die "error: could not open file '$file2':$!\n"; } # if print fout ("Datain;a1;a2;C;Zs;Dataout \n"); while(my $line = <fin>){ @var = split /;/, $line; $X = $var[0]; $a1 = $var[1]; $a2 = $var[2]; $C = $var[3]; $Zs = $var[4]; $x_shift = ($X << 4)+0; $shift_c = (0 << 16 )+$C; $shift_zs = (0 << 16)+$Zs; $dZ = 0; $dZ = $x_shift - $shift_c - $shift_zs; #printf ("x_shift %32b \n", $x_shift); #printf ("shift_c %32b \n", $shift_c); #printf ("shift_zs %32b \n", $shift_zs); #printf ("dZ %32b \n", $dZ); $tmp1_br = ($a1 * $Zs); $tmp1 = (($tmp1_br >> 9) + 1 )>>1; #printf ("tmp1 %32b \n", $tmp1); if($dZ > 0){ # printf ("param a2\n"); $b2_1 = ($dZ * $a2); $b2_2 = (($b2_1 >> 9) + 1)>>1; $Yintern = $b2_2 + $tmp1; } else{ # print ("param a1\n"); $b1_1 = ($dZ * $a1); $b1_2 = (($b1_1 >> 9) + 1)>>1; $Yintern = $b1_2 + $tmp1; } #printf ("b2_2 %32b \n" ,$b2_2); #printf ("b1_2 %32b \n" ,$b1_2); #printf ("Yintern %32b \n" ,$Yintern); $Y = ($Yintern >> 4); print fout ("$X;$a1;$a2;$C;$Zs;$Y \n"); #printf ("Y %32b \n\n\n\n\n" ,$Y); } close (fout); |