■ HTML形式の落とし穴 例えば、上記の例でいうとBODYタグがそうです。 あなたが、上記の実行テストがうまくできると「じゃあ文字色や背景色を変えてみよう。《と思います。 さあ、ここです。 落とし穴が目の前にあるのに気が付かないのです。 通常なら print ""; のように書きますよね。 こう書いたあなたは落とし穴に落ちてしまいました。 この書き方では、CGIはエラーで実行できなくなるのです。 理由は、上記に書いたように "はダブルクォーテーションと読みまして出力文字の必ず最初と最後に記述します。 という規則から外れてしまうからです。 よ〜く見てください。ダブルクォーテーションが全部で6個ありますね。 文字列の前後にダブルクォーテーションを使う方法は間違いではないのですが、その文字列の中にダブルクォーテーションが存在してはいけないのです。 2つ目のダブルクォーテーションが見つかったとき、Perlは文字列が終了したと認識します。 ところが、その後にまだ文字列が続いているのでエラーが発生してしまうのです。 それでは、回避策をまず、2つ説明します。 1つ目は、ダブルクォーテーションをクォート風演算子というものに置き換えてしまう方法です。 クォート風演算子とは、ダブルクォーテーションと同じ機能でありながら、記述方法を変えたものです。 ""(ダブルクォーテーション)の場合はqq{ }に置き換え、''(シングルクォーテーション)の場合はq{ }に置き換えます。 また、このクォート風演算子は非英数文字が使用できますので、{ }以外にも( )、[ ]、//、##などで記述することもできます。 例えば、先ほどの例であれば次のような記述に変更することができます。 print qq{BODY TEXT="red" BGCOLOR="#99ff99">}; print qq(BODY TEXT="red" BGCOLOR="#99ff99">); print qq/BODY TEXT="red" BGCOLOR="#99ff99">/; などと記述する方法です。 私は、わかりやすく( )を使用することが最も多いです。 もちろんqq( )にすればすべてが片付くわけでもありません。 そうですね、今度は文字列の中で()が使用できなくなるという新たな問題が発生します。 この方法は、「どんな文字でも大丈夫。《というわけには行きません。 そこでもうひとつの方法です。 文字列の中のダブルクォーテーションを特殊な意味を持たさないように文字化してしまう(クォートするという)方法です。 その方法は、クォートしたい文字の前に半角の¥(円マーク)をつけます。 注)¥(円マーク)はWindows系のマシンの場合であって、MACやUNIX系では半角の\(バックスラッシュ)となります。 したがって、上記の記述は次のように記述します。 print ""; いいですか、最初にも言いましたように、方法はひとつではないのです。 何通りもある中から自分が最も適当だと思う方法を見つけることです。 また、それをベースにし、自分なりの記述方法を培っていって下さい。