FILEHANDLE
LIST
printLIST
print
This function prints a string or a comma-separated list of strings. The function returns 1 if successful, 0 otherwise.
FILEHANDLE
may be a scalar variable name (unsubscripted), in which case the variable contains either the name of the actual filehandle or a reference to a filehandle object from one of the object-oriented filehandle packages.
FILEHANDLE
may also be a block that returns either kind of value:
print { $OK ? "STDOUT" : "STDERR" } "stuff\n"; print { $iohandle[$i] } "stuff\n";
Note that if
FILEHANDLE
is a variable and the next token is a term, it may be misinterpreted as an operator unless you interpose a
+
or put parentheses around the arguments. For example:
print $a - 2; # prints $a - 2 to default filehandle (usually STDOUT) print $a (- 2); # prints -2 to filehandle specified in $a print $a -2; # ditto (weird parsing rules :-)
If
FILEHANDLE
is omitted, the function prints to the currently selected output filehandle, initially
STDOUT
. To set the default output filehandle to something other than
STDOUT
use the
select
(
FILEHANDLE
) operation.[
7
] If
LIST
is also omitted, prints
$_
. Note that, because
print
takes a
LIST
, anything in the
LIST
is evaluated in list context, and any subroutine that you call will likely have one or more of its own internal expressions evaluated in list context. Thus, when you say:
print OUT <STDIN>;
it is not going to print out the next line from standard input, but all the rest of the lines from standard input up to end-of-file, since that's what
<STDIN>
returns in list context. Also, remembering the if-it-looks-like-a-function-it-is-a-function rule, be careful not to follow the
print
keyword with a left parenthesis unless you want the corresponding right parenthesis to terminate the arguments to the
print
- interpose a
+
or put parens around all the arguments:
print (1+2)*3, "\n"; # WRONG print +(1+2)*3, "\n"; # ok print ((1+2)*3, "\n"); # ok