Previous Page
Next Page

10.12. Printing to Filehandles

Always put filehandles in braces within any print statement.

It's easy to lose a lexical filehandle that's being used in the argument list of a print:

    print $file $name, $rank, $serial_num, "\n";

Putting braces around the filehandle helps it stand out clearly:

    print {$file} $name, $rank, $serial_num, "\n";

The braces also convey your intentions regarding that variable; namely, that you really did mean it to be treated as a filehandle, and didn't just forget a comma.

You should also use the braces if you need to print to a package-scoped filehandle:

    print {*STDERR} $name, $rank, $serial_num, "\n";

Another acceptable alternative is to load the IO::Handle module and then use Perl's object-oriented I/O interface:

    use IO::Handle;

    $file->print( $name, $rank, $serial_num, "\n" );

    *STDERR->print( $name, $rank, $serial_num, "\n" );

    Previous Page
    Next Page