hallo leute,
ich habe eine datei mit mehreren nummern, namen, adressen usw.
zb:
1; Andreas Huber; Liststrasse 8;
1; Klaus Huber; Liststrasse 8;
2; Harald Gaertner; Oskarstrasse 11;
2; Sarah Gaertner; Oskarstrasse 11;
2; Michael Gaertner; Oskartstrasse 11;
Diese schreibe ich in getrennte csv-dateien in tmp.
also entsteht dann eine 1.csv und eine 2.csv ... 1. csv enthaelt dann eben 2 datensaetze, 2.csv 3 datensaetze.
nun will ich alle abarbeiten und daraus txt erezugen (mit den formatierten inhalten der csv-dateien).
ich habe folgenden code dazu geschrieben:
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
#/usr/bin/perl
chdir "tmp";
my @csv_dateien = glob "*.csv";
$text="irgendein text";
$zaehl = 0;
$i=0;
$pruef = 0;
$x = -1;
$a = 2;
$kontrolle = 0;
for(@csv_dateien)
{
$zaehler = -1;
if(!-e @csv_dateien[$zaehl] . ".txt")
{
if($pruef == 0)
{
&ausgabe();
}
}
$zaehl++;
#$pruef++;
}
############################################################################
sub ausgabe {
open DATEN, @csv_dateien[$zaehl] or die "Fehler beim Oeffnen der Datei";
open(FILE, ">>" . @csv_dateien[$zaehl] . ".txt");
while(<DATEN>)
{
push(@zeilen,$_);
}
for(@zeilen)
{
$i++;
$zaehler++;
if($zaehler == 0)
{
print FILE substr(@zeilen[$i],10, 30);
print FILE "\n";
print FILE substr(@zeilen[$i],41, 7);
print FILE " ";
print FILE substr(@zeilen[$i],49, 25);
print FILE "\n";
print FILE substr(@zeilen[$i],75, 25);
print FILE "\n\n\n\n\n";
print FILE $text;
printf FILE "%-8s", "Traeger-Nr.";
printf FILE "%-16s", " Name";
printf FILE "%-36s", " Fehlteil";
printf FILE "%-13s", " Ident-Nr.";
print FILE "\n";
}
if(substr(@zeilen[$i],101, 6) != 0)
{
printf FILE "%04d",substr(@zeilen[$i],101, 6) . " ";
}
printf FILE "%4s", " ";
print FILE " ";
printf FILE "%21s", substr(@zeilen[$i],108, 15);
print FILE " ";
printf FILE "%32s", substr(@zeilen[$i],131, 30);
print FILE " ";
printf FILE "%13s", substr(@zeilen[$i],199, 11);
}
}
die erste und zweite csv werden noch korrekt in txt umgewandelt .. dann allerdings wird nur mehr der text angezeigt. ich weiß leider nicht was ich falsch mache ;-(
Bitte um hilfe.
lg datenreisender