use Thread; #... sub verarbeite_10_zeilen_in_thread($) { return Thread->new(\&verarbeite_10_zeilen,$_[0]); } sub verarbeite_10_zeilen($) { my @zeilen=@$_[0]; # mach hier was du willst return("irgendwas", 42); } my @threads; my @ten_lines; my $cnt=0; open(DAT,'<',$datei) or die $!; while(my $line=) { push(@ten_lines,$line); $cnt++; if($cnt>=10) { $cnt=0; push(@threads,&verarbeite_10_zeilen_in_thread([@ten_lines])); @ten_lines=(); } } # übrig geblibenen Zeilen verarbeiten push(@threads,&verarbeite_10_zeilen_in_thread([@ten_lines])); if(@ten_lines>0); close(DAT); my @back; push(@back,[$thread->join()]) for my $thread (@threads); mach irgendwas mit den zurückgebenen Werten in @back ...