User since
2007-05-30
12
Artikel
BenutzerIn
 
Hallo,
ich habe folgenden Quellcode:
do
{
  $line = <FILE>;
  chomp($line);
  $zeile = $zeile+1;
  $byte = 0;
  for(my $z = 1; $z <= $Number[$zeile]; $z++)
  {
    printf DATEI ("%.4f\n", unpack("I", substr($line,$byte,4)) *$MultFact[$zeile]);
    $byte = $byte + 4;
  }
} until $zeile == $Anzahl || eof;
 
 
Ich lese dadurch aus einer Zeile einer Datei ganz viele Werte aus. Jetzt möchte ich aber, dass mir die Daten bei einem Zeilenwechsel in einer neuen Spalte ausgegeben werden.
Wie kann ich das realisieren?
 
 
User since
2006-07-05
334
Artikel
BenutzerIn
 
Auch hallo,
der neugierige Leser wird wohl wissen wollen, wie die Quelldatei und der restliche Perlcode aussehen. 
Gruss MisterL
“Perl is the only language that looks the same before and after RSA encryption.”
 
 
User since
2003-08-04
14371
Artikel
ModeratorIn
 
... und natürlich auch wie das Endergebnis aussehen soll.
Am besten ein Dummybespiel zeigen.
 
 
User since
2007-05-30
12
Artikel
BenutzerIn
 
Also,
das ist jetzt ein Teil des Quellcodes, müsste denke ich verständlich sein. Lese aus einer Binärdatei zeilenweise Werte aus und wandle sie mit einem Faktor um. In jeder Zeile der Datei stehen sehr viele Werte, die ich über die for-Schleife ausgebe. Ist die for-Schleife beendet, wird die nächste Zeile der Datei eingelesen. Die Werte in dieser Zeile sollen dann aber in einer neuen Spalte ausgegeben werden, nicht unter den Werten der ersten Zeile.
Soll am Ende also so aussehen:
Spalte1          Spalte2          Spalte3 usw.
Werte 1.Zeile  Werte 2.Zeile  Werte 3.Zeile 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
open(FILE, '<', $filename) or die $!;
local $/ = "\r\n";
binmode(FILE);
open(DATEI,">>Pfad/daten.txt");
$zeile = 0;
my $byte;
do
{
    $line = <FILE>;
    chomp($line);
    $zeile = $zeile+1;
    $byte = 0;
    for(my $z = 1; $z <= $Number[$zeile]; $z++)
    {
        printf DATEI ("%.4f\n", unpack("I", substr($line,$byte,4)) *$MultFact[$zeile]);
        $byte = $byte + 4;
    }
} until $zeile == $Anzahl || eof;
 
 
\n\n
<!--EDIT|renee|1181125546-->
 
 
User since
2003-08-04
14371
Artikel
ModeratorIn
 
kannst Du das bitte mal mit konkreteren Werten zeigen? (Quelle und Ziel)
 
 
User since
2007-05-30
12
Artikel
BenutzerIn
 
Quelle:
10101011111010101010101010101010101010101010101......
00101010101010101010101010010111111111000000100......
Ziel:
  2,4552         20,3400         1,2440
  2,3475         50,6000         1,1712
  4,4104         29,0100         0,0615
 12,2865        28,3000         0,4319
  0,0845         28,1500         2,0127
Die erste Spalte vom Ziel lese ich aus der ersten Zeile der Quelle aus (sind nur Beispiel-Werte, die Quelle ist wie gesagt binär).
 
User since
2006-11-29
340
Artikel
BenutzerIn
 
Wieso liest du nicht erst die Werte komplett in ein Array und schreibst sie am Ende in der gewünschten Form raus ?
MfG
 
User since
2003-08-04
14371
Artikel
ModeratorIn
 
Ja, so müsste man das machen. Wobei ich immer noch nicht so wirklich kapiert habe, wann man in die nächste Zeile geht und wann was in der aktuellen Zeile angefügt werden soll...
 
 
User since
2006-11-29
340
Artikel
BenutzerIn
 
Ich glaube die Werte aus Zeile1 sollen in die 1. Spalte und die Werte von Zeile 2 in 2. Spalte, usw.
 
User since
2003-08-04
14371
Artikel
ModeratorIn
 
Und was kommt dann in die zweite Zeile? Das meine ich damit, dass der OP es *genau* erklären soll, wie man von der Quelle zum Ziel kommt.