ドルを「$」という記号で表示する
例えば、「ドル」をカタカナでなく、以下のようにドル記号 $ で表示したいとします。これは US$1.01533150573662 にあたります。試しにこの通り出力指定してみましょう。以下のようにプログラムを変更して下さい。
print "$name さんは 100 円 持っています。\n"; #print "これは $usd_per_yen ドルにあたります。\n"; print "これは US$$usd_per_yen にあたります。\n";実行すると...何でしょう。見慣れないエラーが出てしまいました。
太郎 さんは 100 円 持っています。 Can't use string ("1.01533150573662") as a SCALAR ref while "strict refs" in use at prog01.pl line 17.特殊文字の「エスケープ」
「$」は「これは変数ですよ」という印に使う記号ですので、実はそのままでは出力できません。「$」を出力したい場合は、「$」の前に「\」を書きます。
print "$name さんは 100 円 持っています。\n"; #print "これは $usd_per_yen ドルにあたります。\n"; print "これは US\$$usd_per_yen にあたります。\n";今度はうまくいきますね。
太郎 さんは 100 円 持っています。 これは US$1.01533150573662 にあたります。このように「\」をある文字の前に書いて、本来その文字が持っていた特殊な機能を失わせることを「\で『エスケープする』」と表現します。
「$」の他に、「%」「@」「&」、そして「\」自身も、Perl では特別な機能を持っています。このため、これらの記号を出力したい場合も同じようにエスケープして下さい。
特殊文字エスケープのプログラム例
print "Perl で \% や \@ や \& や \\ を出力する時は \\ でエスケープします。\n";出力結果
Perl で % や @ や & や \ を出力する時は \ でエスケープします。
変数展開を一括で無効にする方法
さて、これまでの例では、Perl で % や @ や & や \ を出力する時は \ でエスケープします。と出力するためには、
print "Perl で \% や \@ や \& や \\ を出力する時は \\ でエスケープします。\n";とプログラムを書かなければならなかったのですね。
これは少々読みにくいですし、記号がたくさんある場合はいちいちエスケープするのが面倒です。
このような場合は、シングルクオートで出力内容を囲うと、その範囲は特殊記号の機能を無効にできます。
シングルクオートで変数展開を無効にするプログラム
print 'Perl で % や @ や & や \ を出力する時は \ でエスケープします。',"\n"; print 'Perl の変数は $name など、変数名の前に記号を書きます。',"\n";こうすると、記号を一つずつエスケープしなくても以下のように出力されます。
Perl で % や @ や & や \ を出力する時は \ でエスケープします。 Perl の変数は $name など、変数名の前に記号を書きます。