Hi Leute,
ich muß einen haufen Messdaten in einzelnen Textfiles auswerten. Da Studenten ja bekanntlich faul sind hab ich mir gedacht das liese sich bestimmt mittels Perl automatisieren.
Also wie soll es ablaufen, ich hab ein Verzeichnis (./in) in dem liegen die ganzen Rohdaten. Perl soll die Dateinamen einlesen und nacheinander abarbeiten und die Ausgabedateien in das Ausgabeverzeichnis schreiben (./out).
Der Prozessablauf sollte im folgenden ungefähr so aussehn
Messdatei öffnen
-> erste Zeile einlesen um eine Maske mit den Spalten zu erstellen die Anschließend in die Ausgabedatei übernommen werden sollen
-> ab der zweiten Zeile mit Hilfe der Maske Daten in das Ausgabearray überführen
-> Ausgabearray in Ausgabedatei schreiben.
Soweit so gut. Aber irgendwie klappt das ganze noch nicht so recht und ich finde den falschen Fehler einfach nicht. Vielleicht hat ja einer von euch eine Idee, nachfolgende mal das was ich schon gecoded hab
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
$eingabe_endung = ".txt";
$ausgabe_excel = ".xls";
$ausgabe_ceda = ".csv";
@parameter = ('Raw', 'Normal');
opendir(IN, "./in/");
@dateien = readdir(IN);
closedir(IN);
foreach $datei(@dateien) {
print $datei,"\n";
if ($datei eq '.' || '..') {
shift @dateien;
}
$datei =~s/\.txt//g;
}
sub vergleich {
$vergleich = shift;
foreach $parameter (@parameter) {
if ($parameter eq $vergleich) {
$rueckgabewert = 1;
} else {
$rueckgabewert = 0;
}
}
}
sub elemente_uebernehmen {
if ($zaehler == 1) {
shift @eingabe;
} else {
push(@ausgabe,shift(@eingabe)."\t");
}
}
foreach $dateiname(@dateien) {
$counter == 1;
@ausgabe = undef;
@spalten = undef;
open (EINGABE, "./in/$dateiname".$eingabe_endung)
or die "Fehler beim öffnen der Datei $!\n";
open(AUSGABEXLS, ">./out/$dateiname".$ausgabe_excel)
or die "Fehler beim öffnen der Datei: $!\n";
while (<EINGABE>) {
chomp(@eingabe = split(/\t/));
print $counter,"\n";
if ($counter == 1) {
foreach $datensatz (@eingabe) {
$rueckgabewert = 0;
&vergleich($datensatz);
if ($rueckgabewert == 1) {
push(@spalten, 0);
} else {
push(@spalten, 1);
}
}
$counter++;
} elsif ($counter > 1) {
foreach $zaehler (@spalten) {
&elemente_uebernehmen($zaehler);
}
$counter++;
push(@ausgabe, "\n");
}
}
print AUSGABEXLS @ausgabe;
close (EINGABE)
or die "Fehler beim schließen der Datei $!\n";
close (AUSGABEXLS)
or die "Fehler beim schließen der Datei: $!\n";
}
Last edited: 2011-06-03 18:40:28 +0200 (CEST)