use strict;

# 
# This script also prints the contents of all the listed files, but
# it first scans through the list to check that each file exists and
# is readable.  It will stop if there are any errors.
#

my $bad = 0;
foreach my $fn (@ARGV) {
    if(! -r $fn) {
	# File cannot be read.  See if it exists or not for a better 
	# error message.
	if(-e $fn) {
	    print STDERR "You do not have permission to read $fn.\n";
	} else {
	    print STDERR "File $fn does not exist.\n";
	}

	# One way or the other, it's bad.
	$bad = 1;
    }
}

# If there was a problem, bail out.
if($bad) { exit 2; }

# Copy all the files.
while(my $fn = shift @ARGV) {

    # Open the file.
    if(!open(INFILE, $fn)) {
	# We know the file is readable, but sometimes something else goes 
	# wrong.  It's safer to check.
	print STDERR "Cannot open $fn: $!\n";
	next;
    }

    # Copy it.
    while(my $l = <INFILE>) {
	print $l;
    }

    close INFILE;
}
# See the man page for the very long list of file tests, some of which are
# Unix-specific.  To find it from perl documentation, choose the
# standard documentation pack, supporting manpages, perlfunc, then
# choose -X (first in the alphabetical list).
