Perl/Perlの基礎知識

Perl での文字出力方法(3ページ目)

Perl プログラムの作業結果を分かりやすく表示する方法を覚えます。

井上 みやび子

執筆者:井上 みやび子

Perlガイド

「"」や「'」を出力する

では次に、こんな風に出力したい場合はどうしたらよいでしょうか?
太郎 君は言いました。"僕は1.01533150573662 ドル持ってるんだ!"
出力の中にダブルクオートが入っています。さらに、変数展開もしたいです。

この場合、以下のどちらもうまくいきません。

ダブルクオートを使うパターン(エラー)
print "$name 君は言いました。"僕は$usd_per_yen ドル持ってるんだ!"\n";
シングルクオートを使うパターン(エラー)
print '$name 君は言いました。"僕は$usd_per_yen ドル持ってるんだ!" ',"\n";
ダブルクオートを使うパターンだと「"$name 君は言いました。"」の部分で出力文字列が切れたと解釈され、残りの部分がプログラムに無い命令としてエラーになります。また、シングルクオートを使うパターンでは変数展開がされません。

このような時は、もうお分かりですね。エスケープです。
print "$name 君は言いました。\"僕は$usd_per_yen ドル持ってるんだ!\"\n";
エスケープする事により、「"」が持っている「出力文字列を囲う」という機能が無くなりますので、以下のように出力されます。
太郎 君は言いました。"僕は1.01533150573662 ドル持ってるんだ!"
これで万事解決です。...が、またいちいちエスケープするのはすこし面倒くさくないですか?面倒くさいでしょう?

クオートの代わりに使える記号

Perl では "..." の代わりに qq{...} が、'...' の代わりに q{...} が使えます。qq{...} と q{...} はそれぞれ "..." と '...' と同じ意味ですが、" と ' を文字そのものとして扱ってくれる点だけが異なり、このためこれらの文字のエスケープの必要が無くなります。
print qq{$name 君は言いました。"僕は$usd_per_yen ドル持ってるんだ!"\n};
print q{$name 君は言いました。"僕は$usd_per_yen ドル持ってるんだ!"},"\n";
「"」をエスケープしなくても、この出力は以下のようになります。
太郎 君は言いました。"僕は1.01533150573662 ドル持ってるんだ!"
$name 君は言いました。"僕は$usd_per_yen ドル持ってるんだ!"
このような記法を覚えておくと、CGI プログラムなど、記号の出力をたくさんしなければならないプログラムを書く時に重宝します。

  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます