www.ugnews.info

ヒアドキュメント

旅行に行ってました。
実は一週間ぶりの更新なんですね。Perlをやらないと一週間が早い!!
それでもPerlのことを忘れたことなんてなかった。こんにちは、ugnewsです。


今日は、ヒアドキュメントというのをやった。これは長い文章を文字列として取り扱う機能らしい。まあこういう感じ。

my $str = <<"EOD";
Programming Lesson
Programming Perl
EOD

print "$str\n";

$strに代入する文字列が <<"EOD" になってることに注意。これで、次の行からEODという行までの範囲が全て変数$strに代入される。

これを実行するとこうなる。

Programming Lesson
Programming Perl

まあこれと同じですね。

$str = "Programming Lesson\nProgramming Perl\n";

EODは「End Of Date」の略。ちなみにEODでなくても文字列なら何でもOK。ただしヒアドキュメントの途中に登場しない文字列な。EODを俺の嫌いな「maneme」に置き換えてやってみる。

my $str2 = <<"maname";
まなめはうすの存在はジョークみたいなものだ
maname

print "$str2\n";

これを実行するとこうなる。

まなめはうすの存在はジョークみたいなものだ

俺はこういうことを書くたびにドキドキしてる。


―――――――――――――――――――――


正直な話、何が便利なのかちょっと分からないヒアドキュメント。変数をたくさん埋め込んだヒアドキュメントにすれば修正がラクだとか。こんな具合に。

my $name = "兄貴";
my $bulkneets = "マラ";
my $Aniki = <<"EOD";
さっき、川原でやった六尺$name凄かったです!!
ガチムチの色黒$nameがオッス連呼で張型ケツにぶちこまれ腰振ってました。
俺もくわえさせられて浣腸喰らい無様に排便さらしました。
バリカン出されたときは一瞬引いたけど、
$nameの「いやなら止めていいんだぜ?」の一言で覚悟決め、
生まれて初めて丸刈りになりました。
その後、脇・チンゲも刈られてビンビンの$bulkneets
思いっきりしごかれ派手にガチムチ$nameの顔に飛ばしました。
スッゲー男らしく気持ちよかったです。
また行くときカキコして下さい!
帰ってから丸刈りの頭見て、また感じまくってます!
EOD

print "$Aniki\n";

これを実行するとこうなる。

さっき、川原でやった六尺兄貴凄かったです!!
ガチムチの色黒兄貴がオッス連呼で張型ケツにぶちこまれ腰振ってました。
俺もくわえさせられて浣腸喰らい無様に排便さらしました。
バリカン出されたときは一瞬引いたけど、
兄貴の「いやなら止めていいんだぜ?」の一言で覚悟決め、
生まれて初めて丸刈りになりました。
その後、脇・チンゲも刈られてビンビンのマラ、
思いっきりしごかれ派手にガチムチ兄貴の顔に飛ばしました。
スッゲー男らしく気持ちよかったです。
また行くときカキコして下さい!
帰ってから丸刈りの頭見て、また感じまくってます!

$nameに入ってる「兄貴」って文字列を「まなめ」にすれば、$Anikiの文章に含まれる「兄貴」が「まなめ」に置換されたりするわけですね。そんなに便利か、これ。


―――――――――――――――――――――


ヒアドキュメントのhtmlな例を書くよ。

my $name = "ドラゴン";
my $mail = q{fuck@maname.com};
my $html = <<"EOD";
<html>
<head>
<title>$nameのホームページ</title>
</head>
<body>
<h1>$nameのホームページ</h1>
<p>$nameのホームページへようこそ。</p>
<p>メールくれよ。アドレスは$mailです。</p>
</body>
</html>
EOD

print "$html\n";

これをhtmlファイルとして出力する場合は「perl ファイル名.pl > ファイル名.html」でOK。コマンドプロンプトとかで打ってくれ。

生成されたhtmlファイルをブラウザで開くとこう表示される。

ドラゴンのホームページ


―――――――――――――――――――――


Perlでは、数や文字列のことを「スカラー」という。$moneyとかはスカラーを格納する変数なので「スカラー変数」という。


―――――――――――――――――――――


これで勉強に使ってる本の「数と文字列」という章が終わった…。まだまだ先は長いなー。つうかこのブログに書いてること、けっこう忘れてる…。