画面に文字や値を書き出すには print() を用います。最後の \n は改行を意味しています。
print "Hello world!!\n";
実行結果は次のようになります。
Hello world!!
CGI の場合は、print の結果は画面ではなく、ブラウザのウィンドウに表示されます。
文字や値を、桁数などの書式を指定して出力するには、printf()を用います。
$year = 1999; $mon = 1; $mday = 1; print "今日は $year/$mon/$mday です。\n"; printf("今日は %04d/%02d/%02d です。\n", $year, $mon, $mday);
実行結果は次のようになります。
今日は 1999/1/1 です。 今日は 1999/01/01 です。
printf(format, arg...) は、フォーマット(書式) format に従って文字列や数値を表示します。最初の %04d が $year に、次の %02d が $mon に対応します。%04d は10進数値(decimal)を、0埋め4桁で表示することを意味します。他にもいろいろな書式を指定することができます。(→ printf のフォーマット一覧)
パーセント(%)文字を書き出すには、%%とします。下記の例では、%d が 85 に置換され、%% が % に置換されて、"確率は 85% です。" と表示されます。
$num = 85; printf("確率は %d%% です。\n", $num);
複数行をまとめて書き出すには、ヒアドキュメント という技術を用いると便利です。ヒアドキュメントでは、文字列を「ここから、ここまで」のように指定します。下記の例では、<<END_OF_DATA から END_OF_DATA までの間の行を書き出します。
print <<END_OF_DATA; Content-type: text/html <html> <head><title>TEST</title></head> <body>This is TEST page.</body> </html> END_OF_DATA
実行結果は次のようになります。
Content-type: text/html <html> <head><title>TEST</title></head> <body>This is TEST page.</body> </html>
<< の次には終了キーワードを記述します。終了キーワード END_OF_DATA は EOD でも DATA_NO_OWARI でも好きな名前で構いません。最初の END_OF_DATA の後ろにはセミコロン(;)を忘れないように、最後の END_OF_DATA の前後にはスペースを空けず、最後にセミコロン(;)もつけないようにしてください。
ヒアドキュメントは文字列の書き出しだけではなく、変数代入に用いることもできます。(→ 複数行にわたる文字列を代入する)
ヒアドキュメントにおいて、終了キーワードをダブルクォート(")で囲むと、複数行文字全体がダブルクォートで囲まれたように振舞います。シングルクォート(')、バッククォート(`)で囲む場合も同様です。シングルクォートでは変数の展開が抑制され、バッククォートでは文字列をコマンドとして実行します。
$xx = "ABC"; print <<"END_OF_DATA"; # print "これは $xx です。"; と同じ これは $xx です。 END_OF_DATA print <<'END_OF_DATA'; # print 'これは $xx です。'; と同じ。 これは $xx です。 END_OF_DATA print <<`END_OF_DATA`; # print `netstat -a` と同じ。 netstat -a END_OF_DATA
実行結果は次のようになります。
これは ABC です。 これは $xx です。 Active Connections Proto Local Address Foreign Address State TCP pc2:1026 MYPC2:0 LISTENING TCP pc2:1028 MYPC2:0 LISTENING : : : :
クォートを省略した場合はダブルクォートと同じ動きになります。
キーボードからの入力を得るには、<> を用います。
print "Input your name: "; $name = <>; print "Your name is $name\n";
実行例を下記に示します。
% perl inout5.pl Input your name: tanaka Your name is tanaka
<> は、<STDIN> の STDIN を省略した形式です。STDIN は 標準入力 を示すファイルハンドルです。$moji = <>; は、キーボードから入力された文字を1行分読み取り、変数 $moji に代入します。CGI の場合はキーボードからの入力はできないので、この形式は用いません。