|< 1 ... 3 4 5 6 >| | 52 Einträge, 6 Seiten |
#!D:/Programme/Perl -w
1
2
3
4
5
6
7
8
use strict;
use warnings;
use Text::CSV_XS;
my @fields;
my $geparst;
my @geparst;
my $i;
1
2
3
4
5
6
7
8
9
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";
1
2
3
4
5
6
7
8
{
@fields = $parser->fields();
if ($fields[-1] =~ m/^\d{2}$/ and $fields[-1] > 0 and $fields[-1] <= 49) # Nur Zahlen von 01 bis 49
{ ;
my $geparst = join (' ',@fields);
@geparst = $geparst;
print DATEI $_,"\n" for(@geparst);
1
2
3
4
5
6
7
8
9
10
}
}
}
close $fh;
close (DATEI);
open(DATEI,"datei.txt") || die "File datei.txt nicht gefunden";
@geparst = <DATEI>;
close(DATEI);
1
2
3
4
5
6
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);
1
2
3
4
5
6
7
8
9
10
11
12
13
#-----------------------------------------------------------------------------------------
# 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);
[...etc...]
1
2
3
4
5
6
7
8
9
10
11
12
13
# Aufteilen auf $servercnt Server
my $servercnt = 6;
my @servers;
for my $s (0 .. $servercnt-1) {
open ($servers[$s], '>', "apo_server" . $s+1 . ".txt")
or die "Konnte Datei apo_server" . $s+1 . ".txt nicht zum Schreiben oeffnen: $!";
}
my $act_server = 0;
for my $i (0 .. $anzahl) {
print $servers[$act_server] $sorted[$i]; # Zeile fuer Server Nr. $act_server+1 ausgeben
$act_server = ($act_server+1 % $servercnt); # naechster Server
}
close $_ for @servers;
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
#!/usr/bin/perl
use strict;
use warnings;
use Text::CSV_XS;
my $File = 'apo_neu-1.csv';
my $ServerCnt = 6;
my @Entries;
my $Parser = Text::CSV_XS->new({
sep_char => ';',
binary => 1,
});
open (my $InFile,'<', $File) or die "Konnte $File nicht oeffnen: $!";
while (my $line = <$InFile>) {
if($Parser->parse($line)) {
my @fields = $Parser->fields();
# Nur Zahlen von 01 bis 49 im letzten Feld erlaubt
if ($fields[-1] =~ m/^\d{2}$/ and $fields[-1] > 0 and $fields[-1] <= 49) {
push @Entries, [ @fields ];
}
} else {
warn "Fehler beim Parsen in Zeile $. (Inhalt: " . $Parser->error_input() . ")";
}
}
# Sortieren nach dem letzten Arrayfeld
my @Sorted = sort {$a->[-1] <=> $b->[-1]} @Entries;
#-----------------------------------------------------------------------------------------
# Aufteilen der Daten auf $ServerCnt Server
#-----------------------------------------------------------------------------------------
my @Servers;
for my $s (0 .. $ServerCnt-1) {
open ($Servers[$s], '>', "apo_server" . ($s+1) . ".txt")
or die "Konnte Datei apo_server" . ($s+1) . ".txt nicht zum Schreiben oeffnen: $!";
}
my $ActServer = 0;
for my $i (0 .. $#Sorted) {
# Zeile fuer Server Nr. $act_server+1 ausgeben
print { $Servers[$ActServer] } join(" ", @{$Sorted[$i]}), "\n";
# Naechster Server
$ActServer = (($ActServer+1) % $ServerCnt);
}
close $_ for @Servers;
#-----------------------------------------------------------------------------------------
|< 1 ... 3 4 5 6 >| | 52 Einträge, 6 Seiten |