プログラミング初心者の Perl 入門日記

Perl超初心者の勉強記録です。失敗もすべて公開中!

ヒアドキュメント


英語のサイトなんだけど、家系図を作る SNS を見たことがあります。
家族や親戚と協力し合いながら完成させるってもので、
何だかいいなぁと思いました(^^)



さて演算子を勉強してたんだけど、
途中で「ヒアドキュメント」ってのが出てきたので
一応やっとくことにしました。

ヒアドキュメントは確か少し前にちらっと出てきましたよね?
長い文字列に使うと便利みたい、とか言ってたやつです。

基本の形はこんな感じですかね↓

<<"終端識別子"
○○ここに文字列○○
終端識別子

これだと分かりにくいか(^^;)

簡単にまとめると、「<<」の後の終端文字列から最後の終端文字列の間が、
クォートでくくったときと同じに処理されるってことです。

終端文字列が例によって違うから迷ったんだけど、
これは何でも好きなものでいいみたいです♪

実際に見た方が分かりやすいと思うので、
昨日の算術演算子で使ったコードを書き直してみます↓

#!/xampp/perl/bin/perl.exe
print"Content-Type: text/html\n\n";

$add = 7 + 2;
$sub = 10 - 1;
$mul = 3 * 3;
$dev = 18 / 2;
$amari = 10 % 3;
$beki = 3 ** 2;

print<<"HERE_1";
7+2= $add
10-1= $sub
3×3= $mul
18÷2= $dev
10÷3の余り= $amari
3の2乗= $beki
HERE_1

print<<'HERE_2';
7+2= $add
10-1= $sub
3×3= $mul
18÷2= $dev
10÷3の余り= $amari
3の2乗= $beki
HERE_2

print<<HERE_3;
7+2= $add
10-1= $sub
3×3= $mul
18÷2= $dev
10÷3の余り= $amari
3の2乗= $beki
HERE_3

初めはエラーが出てしまったんだけど、
最後(「HERE_3 の後」)に改行を入れたらこうなりました↓

7+2= 9 10-1= 9 3×3= 9 18÷2= 9 10÷3の余り= 1 3の2乗= 9 7+2= $add 10-1= $sub 3×3= $mul 18÷2= $dev 10÷3の余り= $amari 3の2乗= $beki 7+2= 9 10-1= 9 3×3= 9 18÷2= 9 10÷3の余り= 1 3の2乗= 9

なぜ改行が入らないんだろう……?

終端識別子と終端識別子の間の文字列は、
改行が維持されるんじゃないの……?

いろんな例を見てたら、各変数の後に\nを入れてるコードもあったので
試しに入れてみたんだけど、結果は変わらず(-_-)

でもいちいち改行コード入れてたら時間かかるし、
ヒアドキュメント使う意味ないよね。

何かおかしいのは分かってるけど、こんなのも試してみました↓

#!/xampp/perl/bin/perl.exe

$add = 7 + 2;
$sub = 10 - 1;
$mul = 3 * 3;
$dev = 18 / 2;
$amari = 10 % 3;
$beki = 3 ** 2;

print<<"HERE_1";
Content-Type: text/html
7+2= $add
10-1= $sub
3×3= $mul
18÷2= $dev
10÷3の余り= $amari
3の2乗= $beki
HERE_1

print<<'HERE_2';
Content-Type: text/html
7+2= $add
10-1= $sub
3×3= $mul
18÷2= $dev
10÷3の余り= $amari
3の2乗= $beki
HERE_2

print<<HERE_3;
Content-Type: text/html
7+2= $add
10-1= $sub
3×3= $mul
18÷2= $dev
10÷3の余り= $amari
3の2乗= $beki
HERE_3

当然こんな感じのエラーが出ました↓

Error message:
malformed header from script.


そうだよね、ヘッダがダメだよね~(>_<)

HTML のタグも入れてみたんだけど、うまくいきませんでした……。

まぁ何がやりたかったかというと、
終端文字列を "" で囲むか、'' で囲むか、または囲まないかで
出力結果を比べたかったのです。

"" でくくったのと、くくらないパターンは上手く出力されるけど、
'' は変数もそのまま表示されちゃってますよね。

改行されてないから見にくいけど……。

3種類の例を1度にやってる上に、変数もからんでるから
ややこしいことになってて上手くいかないのかなぁ?

次はもっとシンプルなのを試してみようと思います(^^;)


以下のページを参考にさせていただきました↓
Perl-第7回「演算子(1)」
CGI-Perl 基礎実地編 - 実習3 (ヒアドキュメント)
ヒアドキュメント - サンプルコードによるPerl入門
Perl - ヒアドキュメント
ありがとうございました<(_ _)>


シンプルなヒアドキュメントを試した記事はこちら↓
ヒアドキュメントで問題発生!
ヒアドキュメントで改行できるようになりました~



  1. 2011/12/06(火) 15:15:41|
  2. 基礎編
  3. | コメント:0
<<算術演算子の続き | ホーム | 算術演算子>>

コメント

コメントの投稿


管理者にだけ表示を許可する