Perlコーディング

print文とヒアドキュメント

2007年11月17日
ファイルに書き込むときは
 print FILEHANDLE "書き込む内容";
とprint文にファイルハンドラを続けて書き、ファイルに書き込みました。

ファイルハンドラを指定しなければ、標準出力されます。ブラウザから呼び出されていればブラウザに、コマンドプロンプトから呼び出されていればコマンドプロンプトに出力されます。


このprint文を使って、ブラウザに文字を表示します。
たくさん文字を表示したいときは、ヒアドキュメントを使うと便利です。

 print <<EOT;
 出力したい文字列
 EOT

こうかくと、<<EOT;とEOTで囲まれた文字列が出力されます。出力したい文字列は【"】や【'】で括る必要はありません。なので、【"】を出力させたい場合、【\】でエスケープする必要もありません。便利ですね。

ヒアドキュメントはprintだけでなく、変数に文字を代入するときも使えるそうです。
 $hensu = <<EOT;
 代入したい文字列
 EOT



ところが、このprintとヒアドキュメントに随分悩まされました。なかなか表示されなかったのです。結局、EOTの前にタブを入れていたのが原因だったようです。こんなことで・・・


<<'EOT';
とすると、出力したい文字列の中に変数があっても、その値を出力しなくなります。
例えば、$hensuに"変数"という文字が代入されていたとします。

 print <<EOT;
 $hensu
 EOT
の場合は、【変数】と表示されます。

 print <<'EOT';
 $hensu
 EOT
とすると、【$hensu】と表示されます。


<<`EOT`;
とすると、文字列をコマンドとして実行し、結果を返してくるそうです。


知らなかったのですが、PHPでもヒアドキュメントは使えるそうです。
PHPの場合、
 print <<< EOT
 出力したい文字列
 EOT;
です。perlとは少し構文が異なります。