print

ファイルハンドルにリストを出力する

構文

解説

print は文字列またはそのリストを出力します。次の例は、3 つの文字列のリストを出力します。 出力内容をリストとして指定した場合、通常であれば区切りなしに連結された状態で出力されます (通常でない場合は後述します)。

print "one", "two", "three";    # "onetwothree"

筆者個人的にはお勧めしませんが、strict モード (use strict を指定した状況) でない場合は、 FILEHANDLE にファイルハンドルの名前を含んだスカラー変数を指定することができます。

my $fh = 'STDOUT';
print $fh "one";

FILEHANDLE が省略されたら、選択中の出力ファイルハンドルへ出力します (詳細は select を参照してください)。 次の例は、select を使ってデフォルトの出力ファイルハンドルを変更しています。 そして、print にはファイルハンドルを指定せずに、該当のファイルハンドルへ文字列を出力しています。

open my $fh, '>', './sample.txt';
select $fh;
print "Hello World";

LIST が省略されたら、$_ を現在選択中の出力ファイルハンドルに出力します。 引数に FILEHANDLE だけを指定し、LIST を省略して $_ の内容を出力したい場合、 FILEHANDLE には $fh のような間接的なファイルハンドルではなく、 FH のようなベアワードのファイルハンドルを指定しなければいけません。

# 間違った使い方
open my $fh, '>', './sample.txt';
print $fh;    # $fh は出力ファイルハンドルとして認識されず、$fh を出力しようとしてしまう

# 正しい使い方
open FH, '>', './sample.txt';
print FH;     # FH は期待通りに出力ファイルハンドルとして認識される

もし組み込み変数 $, に値がセットされている場合、LIST の各要素の間に $, の値が差し込まれます。

$, = ':';
print 'one', 'two', 'three';    # "one:two:three"

もし組み込み変数 $\ に値がセットされている場合、LIST のすべてが出力された直後に $\ の値が出力されます。

$\ = '.';
print 'one', 'two', 'three';    # "onetwothree."