#!/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; #-----------------------------------------------------------------------------------------