補間で注意すべき点がいくつかありますが、一度知ってしまえば、誤って行うことはほとんどありません。
有効な識別子テキストの横に変数名を配置します。Perlは最も長い有効な変数名を見つけ、それが以前に定義されているかどうかを気にしません。変数名の部分を中かっこで区切って明示的にすることができます。
my $p = 'p';
print "Mind your $ps and qs\n"; # $ps, not $p
print "Mind your ${p}s and qs"; # now its $p
さて、その例では、アポストロフィを忘れました。追加すると、アポストロフィが昔からパッケージセパレータであったため、別の問題が発生しますが、それでも機能します。中かっこもそこで機能します。
my $p = 'p';
print "Mind your $p's and q's\n"; # $p::s, not $p
print "Mind your ${p}'s and q's"; # now its $p
Perlは、ハッシュと配列への単一要素アクセスを補間することもできるため、変数名の横にインデックス文字を配置すると、望ましくないことが行われる可能性があります。
print "The values are $string[$foo]\n"; That's the element at index $foo
print "The values are $string{$foo}\n"; That's the value for the key $foo
文字列に電子メールアドレスが必要な場合、Perlが配列を補間するのを忘れる可能性があります。Perlは、@
:をエスケープしない限り、これを致命的なエラーにしていました。
print "Send me mail at joe@example.com\n"; # interpolates @example
print "Send me mail at joe\@example.com\n";
Perlはバックスラッシュを使用して一部の文字をエスケープするため、リテラル文字が必要な場合はそれらを2倍にする必要があります。
print "C:\real\tools\for\new\work"; # not what you might expect
print "C:\\real\\tools\\for\\new\\work"; # kinda ugly, but that's life
print "C:/real/tools/for/new/work"; # Windows still understands this
これらの小さな落とし穴にもかかわらず、別の言語を使用する必要がある場合に、Perlで文字列を簡単に作成できることを本当に懐かしく思っています。