Thread Auslesen aus .txt bis Trennzeichen, wie?: Auslesen aus .txt bis Trennzeichen, wie? (51 answers)
Opened by Gast at 2005-10-26 14:09

duerov
 2005-11-10 17:10
#59392 #59392
User since
2005-10-26
27 Artikel
BenutzerIn
[default_avatar]
Hallo nochmal,
so sieht mein optimierter Code aus. Hab 50 Zeilen im Vergleich zum Vorgänger kürzen können. Falls jemand Vorschläge hat wie man was anders/kürzer/besser... machen kann...
Wär es sinnvoll, die "Serverlastverteilung" zwecks Übersichtlichkeit auszulagern? Müsst ich da dann ein Modul schreiben? Oder den Abschnitt in eine ander Perldatei und die dann einbinden?
Code: (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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!D:/Programme/Perl -w

use strict;
use warnings;
use Text::CSV_XS;

my @fields;
my $geparst;
my @geparst;
my $i;

my $file = 'apo_neu-1.csv';
my @entries;

my $parser = Text::CSV_XS->new({sep_char => ';',


'binary' => 1


});

open(DATEI,">datei.txt") or die $!;
open(my $fh,"<$file") or die "File apo_neu-1.csv nicht gefunden";
while (my $line = <$fh>)
{
if($parser->parse($line))
{
@fields = $parser->fields();

if ($fields[-1] =~ m/^\d{2}$/ and $fields[-1] > 0 and $fields[-1] <= 49) # Nur Zahlen von 01 bis 49
{ &nbsp
;
my $geparst = join (' ',@fields);
@geparst = $geparst;
print DATEI $_,"\n" for(@geparst);
}

}
}
close $fh;
close (DATEI);

open(DATEI,"datei.txt") || die "File datei.txt nicht gefunden";
@geparst = <DATEI>;
close(DATEI);

my @sorted = map{$_->[0]}sort{$a->[1]->[-1] <=> $b->[1]->[-1]}map{[$_,[split(/ /,$_)]]}@geparst; # Sortieren nach dem letzten Arrayfeld
my $anzahl = @sorted;

open(DATEI,">datei.txt") || die $!;
print DATEI $_ for(@sorted);
close(DATEI);

#-----------------------------------------------------------------------------------------
# Aufteilen der Daten auf 6 Server
#-----------------------------------------------------------------------------------------

open(SERVER1,">apo_server1.txt") || die "Datei apo_server1.txt nicht gefunden";
for($i=0; $i<$anzahl;)
{
print SERVER1 $sorted[$i];
$i += 6;
}
close(SERVER1);

#---------------------------------------------------------------------------------------

open(SERVER2,">apo_server2.txt") || die "Datei apo_server2.txt nicht gefunden";
for($i=1; $i<$anzahl;)
{
print SERVER2 $sorted[$i];
$i +=6;
}
close(SERVER2);

#-----------------------------------------------------------------------------------------

open(SERVER3,">apo_server3.txt") || die "Datei apo_server3.txt nicht gefunden";
for($i=2; $i<$anzahl;)
{
print SERVER3 $sorted[$i];
$i +=6;
}
close(SERVER3);

#-----------------------------------------------------------------------------------------

open(SERVER4,">apo_server4.txt") || die "Datei apo_server4.txt nicht gefunden";
for($i=3; $i<$anzahl;)
{
print SERVER4 $sorted[$i];
$i +=6;
}
close(SERVER4);

#-----------------------------------------------------------------------------------------

open(SERVER5,">apo_server5.txt") || die "Datei apo_server5.txt nicht gefunden";
for($i=4; $i<$anzahl;)
{
print SERVER5 $sorted[$i];
$i +=6;
}
close(SERVER5);

#-----------------------------------------------------------------------------------------

open(SERVER6,">apo_server6.txt") || die "Datei apo_server6.txt nicht gefunden";
for($i=5; $i<$anzahl;)
{
print SERVER6 $sorted[$i];
$i +=6;
}
close(SERVER6);

#-----------------------------------------------------------------------------------------

Und danke nochmal, ohne eure Hilfe wär das in 100 Jahren nichts geworden.

View full thread Auslesen aus .txt bis Trennzeichen, wie?: Auslesen aus .txt bis Trennzeichen, wie?