#!/usr/bin/perl use strict; use warnings; use IO::Handle; use IO::Select; my ($fname1, $fname2) = qw(1.txt 2.txt); open my $fh1, $fname1 or die $!; open my $fh2, $fname2 or die $!; my $slct = IO::Select->new(); $slct->add($fh1, $fh2); while (1) { my @canBeRead = $slct->can_read(); foreach my $fh (@canBeRead) { my $line = $fh->getline(); if (defined $line) { my $fname = $fh == $fh1 ? $fname1 : $fname2; print "$fname: $line\n" } else { sleep 1; # be nice } } }