my @fh; my @file_names = ("output1.txt", "output2.txt", "output3.txt"); my @in = <>; my $i = 0; open (READ, @in) || die "cannot open @in: $!.\n"; while ( <> ){ for (my $i=0; $i<=$#file_names; $i++){ $fh[$i]= IO::File->new( ">$file_names[$i]" ) || die "Cannot open $file_names[$i]: $!.\n"; print {$fh[$i]} "$_"; } } close (READ); print "done.\n";