Thread Einlesen von Zahlenfolgen mit anschliessender Weiternutzung (5 answers)
Opened by Thomas at 2009-06-15 16:09

Gast Thomas
 2009-06-16 08:01
#122515 #122515
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);

View full thread Einlesen von Zahlenfolgen mit anschliessender Weiternutzung