Perl Language
Perlでの補間
サーチ…
基本補間
補間とは、Perlインタプリタが特別な文字列(エスケープとも呼ばれます)に対して、名前といくつかのシンボル(直接入力することは不可能または難しい)の変数の値を代入することを意味します。最も重要な区別は、一重引用符と二重引用符の間にあります。二重引用符は囲まれた文字列を補間しますが、一重引用符は含みません。
my $name = 'Paul';
my $age = 64;
print "My name is $name.\nI am $age.\n"; # My name is Paul.
# I am 64.
しかし:
print 'My name is $name.\nI am $age.\n'; # My name is $name.\nI am $age.\n
一重引用符ではなくq{}
(任意の区切り文字)を使用できます。二重引用符ではなくqq{}
使用できます。たとえば、 q{I'm 64}
は、補間されていない文字列内にアポストロフィを使用することができます(そうでなければ、文字列を終了します)。
ステートメント:
print qq{$name said: "I'm $age".}; # Paul said: "I'm 64".
print "$name said: \"I'm $age\"." # Paul said: "I'm 64".
同じことをしますが、最初の文字列では文字列内で二重引用符をエスケープする必要はありません。
変数名が周囲のテキストと衝突する場合は、 ${var}
という構文を使用して曖昧さを排除できます。
my $decade = 80;
print "I like ${decade}s music!" # I like 80s music!
補間されるもの
Perlは変数名を補間します:
my $name = 'Paul';
print "Hello, $name!\n"; # Hello, Paul!
my @char = ('a', 'b', 'c');
print "$char[1]\n"; # b
my %map = (a => 125, b => 1080, c => 11);
print "$map{a}\n"; # 125
配列は全体として補間され、要素はスペースで区切られます。
my @char = ('a', 'b', 'c');
print "My chars are @char\n"; # My chars are a b c
Perlはハッシュ全体を補間しません :
my %map = (a => 125, b => 1080, c => 11);
print "My map is %map\n"; # My map is %map
関数呼び出し(定数を含む)
use constant {
PI => '3.1415926'
};
print "I like PI\n"; # I like PI
print "I like " . PI . "\n"; # I like 3.1415926
Perlは\
始まるエスケープシーケンスを補間します :
\t horizontal tab
\n newline
\r return
\f form feed
\b backspace
\a alarm (bell)
\e escape
\n
補間は、プログラムが動作しているシステムに依存します:現在のシステム規則に従って改行文字を生成します。
Perlは\v
補間しません 。これはCや他の言語の垂直タブを意味します。
キャラクターはそのコードを使って対処することができます:
\x{1d11e} 𝄞 by hexadecimal code
\o{350436} 𝄞 by octal code
\N{U+1d11e} 𝄞 by Unicode code point
またはUnicode名:
\N{MUSICAL SYMBOL G CLEF}
コード付き文字0x00
と0xFF
ネイティブ符号化では、より短い形で対処することができます。
\x0a hexadecimal
\012 octal
制御文字は、特殊なエスケープシーケンスを使用してアドレス指定することができます。
\c@ chr(0)
\ca chr(1)
\cb chr(2)
...
\cz chr(26)
\c[ chr(27)
\c\ chr(28) # Cannot be used at the end of a string
# since backslash will interpolate the terminating quote
\c] chr(29)
\c^ chr(30)
\c_ chr(31)
\c? chr(127)
大文字は"\cA" == "\ca"
と同じ意味です。
\N{...}
以外のすべてのエスケープシーケンスの解釈は、プラットフォーム依存のコードとエンコード依存のコードを使用するため、プラットフォームによって異なる場合があります。