.. snip .. if (/^hostname ([-\w]+) /) or if (/^(?:\s+|)hostname ([-\w]+) /) #### # old line open F, $path; # new line IMHO open(F, "$path") || die "Cant open $path: $!\n"; # or even open(F, "$path") || ( print "Cant open $path: $!\n" && next); # another small trim would be to do away with the interim # array and filename.. $filelist = "/var/adm/links/newrun/filelist"; for ( `cat $filelist` ) { chomp; open(F, "$_") || die "Cant open $_: $!\n"; while () { # anchor could apply here as well.. !/hostname/ ? next : chomp; # work on hostname lines here last; } close(F); print $hostname. " "; }