#!/usr/bin/env perl use strict; use warnings; my $num_files_to_write = 4; use Data::Dumper; my @filehandles; for my $id ( 1..$num_files_to_write ) { open ( my $fh, '>', "file_$id.txt" ) or die $!; push @filehandles, $fh; } local $/ = '5'; while ( <> ) { select $filehandles[$. % $num_files_to_write]; print; } foreach my $fh ( @filehandles ) { close ( $fh ); }