Perlゼミ

  1. Perl
  2. 構文
  3. 文字列
  4. here

ダブルクォート文字列

ダブルクォート文字列は、ダブルクォート「"」で囲まれた文字列のことです。変数展開を行えることと、改行やタブなどのダブルクォート文字列のエスケープシーケンスを使えることが特徴です。

my $name = "Yuki Kimoto";

# 変数展開と改行文字を使う
my $message = "I'm $name\n";

# 「I'm Yuki Kimoto」と表示される。改行あり
print $message;

変数展開とは

変数展開とは、文字列の中で、変数の内容を展開できる機能のことです。

my $name = "Yuki Kimoto";

# 変数展開と改行文字を使う
my $message = "I'm $name\n";

変数名の区切りを明確にしたい場合は、シジル「$」を除いた変数名を「{}」で囲むことで明示できます。

my $name = "Yuki Kimoto";

# 変数名を明示する
my $message = "I'm ${name}_foo\n";

詳しくは、変数展開の記事で解説しています。

ダブルクォート文字列のエスケープシーケンス

ダブルクォート文字列の中で使えるエスケープシーケンスを紹介します。

利用頻度が高いものは改行「\n」、タブ「\t」、ダブルクォート「\"」、バックスラッシュ自体「\\」です。

エスケープシーケンス意味
\n改行
\tタブ
\""
\\\

「\x」で始めることによって、ASCIIコード自体を記述できるエスケープシーケンスもあります。

# ASCIIコードを直接指定して改行を表現
my $message = "Hello\x0D\x0A";
print $message;

上記の例はHTTPプロトコルにおける改行コードがASCIIの16進数で「D」「A」の並びなので、それを表現したサンプルです。「\x」の後ろの0は、必須ではありませんが、ASCIIコードを2桁の16進数で表現する慣習に従って、0を入れています。

詳しくは、ダブルクォート文字列のエスケープシーケンスの記事で解説しています。

正規表現リテラルとの関係

ダブルクォート文字列の変数展開やエスケープシーケンスは、正規表現リテラルの中でも、そのまま使うことができます。

my $name = "Yuki Kimoto";

my $message = "I'm Yuki Kimoto\tHello";

# 正規表現リテラルの中でも変数展開とエスケープシーケンスが使える
if ($message =~ /$name\t/) {
  
}

Perlのテキスト処理が便利な理由のひとつは、正規表現リテラルの中で、ダブルクォート文字列の変数展開とエスケープシーケンスが、そのまま使えることです。

変数展開を使う頻度はそれほど高くありませんが、正規表現リテラルがダブルクォート文字列の自然な拡張であるという点が、自然に利用できる体感となっていると感じています。

Perlでは、正規表現が、プログラミング言語機能として組み込まれており、正規表現リテラルも言語機能の一つとして、実装されています。

Perlプログラミングちゃんねるのご紹介

Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「今日も元気だ! Perlで元気!」

Perlプログラミングちゃんねる

Youtubeチャンネル登録、いいね、コメント歓迎

Twitter
フォロー、いいね、リツート、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

Perl総合研究所