Perl での、文字列の扱い:<br />シングルクォートとダブルクォーテーションの違い

まずはこのエントリのタイトルにある「シングルクォート ('…') とダブルクォーテーション ("…")」、なぜ 「クォート」 と 「クォーテーション」 なのか? という細かい^^;質問は置いておいて、Perl で文字列を表現する方法は実はいくつかあるのだということに注意したい。基本的にはシングルクォートとダブルクォーテーションの違いがある。シングルクォートの場合は、その中に書いた文字列はそのまま文字列として Perl に解釈される。特にダブルクォーテーションの場合は、文字列の中に変数を埋め込める。これは便利な反面、やっかいなことになることがある。例えばメールアドレスをダブルクォーテーションで囲んだ場合には、メールアドレスには必ずアットマーク 「@」 があり、この文字に Perl が出くわしたときに 「配列 」と解釈してしまうため、多くの場合は自分の予期しない結果か、エラーとなる。

my $str = 'Perl では'; print $str . '文字列をシングルクォートで囲むのが基本'; print "$str このように、ダブルクォーテーションで囲むことができる";

なお、文字列の連結にはピリオド「.」を使う。

print '文字列を' . '連結する';

また、'…' と "…" はそれぞれ以下のように書くことができる。

print q|これはシングルクォートで囲ったのと同じ意味|; print qq|これはダブルクォーテーションで囲ったのと同じ意味|; print q/…qの後にくる記号はスラッシュとかも使える/; print qq/…同じく qqの後にくる記号はスラッシュとかも使える/; my $mail = 'support@twinkle.cc'; print $mail; →これはきちんと support@twinkle.cc と表示される。 $mail = "support@twinkle.cc"; print $mail; → こちらは support.cc と表示される。なぜなら、@twinkle が変数とみなされるからである。 → use strict を使ったらエラーとなる。

参考書

<iframe src="https://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&ItemId=4873112028&AWSAccessKeyId=152ZP71KPB47XM09CS02&AssociateTag=twinklexxx-22&Operation=ItemLookup&IdType=ASIN&ContentType=text%2Fhtml&Version=2006-03-08&Page=1&ResponseGroup=ItemAttributes,Images,Offers&Style=https://perltips.twinkle.cc/files/sites/perltips/xsl/amazon.xsl" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" height="160"></iframe> <iframe src="https://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&ItemId=4873112036&AWSAccessKeyId=152ZP71KPB47XM09CS02&AssociateTag=twinklexxx-22&Operation=ItemLookup&IdType=ASIN&ContentType=text%2Fhtml&Version=2006-03-08&Page=1&ResponseGroup=ItemAttributes,Images,Offers&Style=https://perltips.twinkle.cc/files/sites/perltips/xsl/amazon.xsl" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" height="160"></iframe>

Comments