出力中の変数名の区切り
さて注意深い方は、私がこれまでの説明でちょっとしたごまかしをしているのにお気づきでしょうか。print qq{$name 君は言いました。\n};
太郎_君は言いました。この、空白です。日本語としては不自然ですよね。
この空白を無くすとどうなるでしょうか?
print qq{$name君は言いました。\n};文法チェックをすると、以下のようなエラーが出てしまいました。
Global symbol "$name君は言いました" requires explicit package name at prog01.pl line 15. prog01.pl had compilation errors.これは、「$name君は言いました」までが変数名と解釈され、そんな変数は変数宣言されていないよ、というエラーメッセージなのです。
このような場合は、プログラムにどこまでが変数名なのかを伝えてやる必要があります。このためには、変数名を { と } で囲って下さい。
変数名を明確にするために { と } で囲う
print qq{${name}君は言いました。\n};これで、以下のように空白なしで表示できます。
太郎君は言いました。
「¥n」を打たずに改行を出力する
先ほどから太郎君は言いました。"僕は1.01533150573662 ドル持ってるんだ!"と出力していますが、これを2行に分けて表示したい場合はどうしましょうか?改行は「\n」を入れておけばよいのでしたね。
print qq{${name}君は言いました。\n"僕は$usd_per_yen ドル持ってるんだ!"\n};出力の途中でも、「\n」を挿入すればそこに改行が入ります。
上のプログラムの出力は、以下のようになります。
太郎君は言いました。 "僕は1.01533150573662 ドル持ってるんだ!"この位の長さならこのような書き方でも良いですが、出力がもっと長い場合は、横につなげていくのも、毎回 print 文で切り替えるのも面倒です。このような場合、プログラム内のクオートで囲った中に改行そのものを記入しておく事ができます。
例えば、以下のように書くと、出力の時もプログラム内に書いた通り改行が反映されます。
print qq{ ${name}君は言いました。 "僕は$usd_per_yen ドル持ってるんだ!" };この書き方は、長い文章や CGI プログラムから HTML ページを書き出すときなどに便利です。