HTMLソースが混じったperlはコンピュータから見たら、どう認識されるのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/04 06:42:23
  • 終了:2007/07/11 06:45:03

回答(3件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012007/07/04 07:58:53

ポイント35pt

WindowsもMacOSXもLinuxもファイル名によってプログラムなのかデータなのか、どのプログラム用のものなのかを判断します。

   ↓

ファイル名のどこを見て判断するかというと拡張子(一番最後に.ドットで切られている部分)で行います。

   ↓

仮にファイル名がxxx.yyy.plだとすると

OSは拡張子plはどのプログラム用なのかを探して、プログラムを起動しようとします。

   ↓

plがPerl用だと設定(この設定の事を「関連付け」と言います)してあればPerlに渡されます。

   ↓

Perlは渡されたxxx.yyy.plの内容を解析してxxx.yyy.plに書かれているプログラムを実行しようとします。

   ↓

HTMLはPerlのステートメント(命令)でも関数でもありませんので、

Perl自体はHTMLをただ文字が並んでいるだけ(文字列と言います)としてしか理解できません。

   ↓

文字列としてしか認識しませんのでHTMLが混じっているのだとすればエラーとなりプログラムは正常に動きませんが

HTML部分を文字列として認識するように意図してプログラムしたのであれば問題なく稼動します。

   ↓

意図したプログラムの例としては、

print "<html>\r\n"; ←Perlは'もしくは"で囲まれた部分を文字列として認識して出力します
print "<head>\r\n";
print "<title>テスト</title>\r\n";
print "</head>\r\n";
print "<body>\r\n";
print "<h1>テストだよ~~</h1>\r\n";
print "</body>\r\n";
print "</html>\r\n";

あるいは

print <<EOF;  ←PerlはEOFまでの間の部分は解析無しにそのままの形で出力します
<html>
<title>テスト</title>
</head>
<body>
<h1>テストだよ~~</h1>
</body>
</html>
EOF

のようにしたりします。

結果はいずれも

<html>
<title>テスト</title>
</head>
<body>
<h1>テストだよ~~</h1>
</body>
</html>

となります。

(他にもいろいろ組み合わせますが、かなり長くなるので割愛させていただきます)

拡張子 - Wikipedia

id:Kumappus No.2

くまっぷす回答回数3784ベストアンサー獲得回数1852007/07/04 11:00:34

ポイント35pt

http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%9...

すごーく簡単に言うと「正しくプログラムが書かれていればHTMLの部分は単なる文字列として扱われる」です。

こういうたとえでどうでしょうか。日本語で文章を書くときに、一般には「」の中は話し言葉が入ります。なので日本語の文法を知っている人は頭から「」のなかに入っている文章は地の文ではなくて、何か話された内容、引用された内容など、なんだなと思って読み進めますよね。これと同じようなことをperlは行っています。

perl(に限りませんが)のプログラムはここから実行される、という場所が決まっています。そこからperlプログラムは順番にプログラムソースを読み進めていって解釈、実行を繰り返します。プログラムが正しく動作するためにはperl自体が解釈できないHTMLは

  • 文字列として存在する場所
  • コメントとして存在する場所

ぐらいしか置きようがないのです。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 TransFreeBSD 668 323 268 2007-07-06 21:17:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません