How do I print to more than one file at once?

If you only have to do this once, you can do this:

    for $fh (FH1, FH2, FH3) { print $fh "whatever\n" }
To connect up to one filehandle to several output filehandles, it's easiest to use the tee(1) program if you have it, and let it take care of the multiplexing:

    open (FH, "| tee file1 file2 file3");
Or even:

    # make STDOUT go to three files, plus original STDOUT
    open (STDOUT, "| tee file1 file2 file3") or die "Teeing off: $!\n";
    print "whatever\n"                       or die "Writing: $!\n";
    close(STDOUT)                            or die "Closing: $!\n";
Otherwise you'll have to write your own multiplexing print function--or your own tee program--or use Tom Christiansen's, at http://www.cpan.org/authors/id/TOMC/scripts/tct.gz , which is written in Perl and offers much greater functionality than the stock version.
Back to perlfaq5